Rollen eines Identitätsanbieter in Zugriffsrechten referenzieren

In diesem How-to wird beschrieben, wie Sie Rollen eines Identitätsanbieters in Zugriffsrechten referenzieren können, wenn Sie security.manager for OGC mit einem Identity Service verbunden haben.

Sobald Sie security.manager for OGC mit einem Identity Service verbunden haben, kann security.manager for OGC Zugriffsrechte auf Basis von Rollen durchsetzen, die Nutzer:innen beim Identitätsanbieter zugewiesen wurden.

Angenommen, der Identity Service ist mit einem Keycloak als Identitätsanbieter verbunden. Im Keycloak wurde ein Account "miller" erstellt, der der Rolle "managers" zugewiesen wurde. Sie können nun in security.manager for OGC ein Zugriffsrecht definieren, das der Rolle "managers" Zugriff auf den Layer "hotels" eines WMS erlaubt. Meldet sich eine Person im Browser als "miller" beim Keycloak an und greift anschließend auf den WMS über security.manager for OGC zu, so wird ihr der Zugriff auf den Layer "hotels" erlaubt.

Voraussetzungen

  • Sie haben security.manager for OGC mit dem Identity Service verbunden.

  • Identity Service und security.manager for OGC sind im Browser über die gleiche Domäne erreichbar, also zum Beispiel als https://id.example.com/…​ und https://secman.example.com/secman-ogc/…​.

  • Sie besitzen einen Account bei dem Identitätsanbieter, der mit dem Identity Service verbunden ist. Das kann zum Beispiel ein Account in ArcGIS Portal oder Keycloak sein.

Verfügbare Rollen-Namen ermitteln

Welche Rollennamen Sie bei der Definition von Zugriffsrechten verwenden können, hängt von der Konfiguration des Identity Service ab, den Sie mit security.manager for OGC verbunden haben. In der Dokumentation des Identity Service finden Sie unter Rollenzuordnung detaillierte Informationen darüber, welche Rollennamen Nutzer:innen abhängig vom konfigurierten Identitätsanbieter zugeordnet werden.

Rollen eines Accounts ermitteln

Für einen konkreten Account können Sie die zugewiesenen Rollen ermitteln, indem Sie im Browser den Identity Service aufrufen:

  1. Rufen Sie im Browser die Startseite des konfigurierten Identity Service auf, zum Beispiel https://id.example.com/identity/.

  2. Klicken Sie auf den Link unter Login, zum Beispiel https://id.example.com/identity/account/login.

  3. Melden Sie sich mit Ihrem Account am Identitätsanbieter an, falls Sie dazu aufgefordert werden.

Nach erfolgtem Login werden Sie zurück zum Self-Endpunkt des Identity Service geleitet, dessen Adresse mit /identity/account/self endet. Die Antwort enthält Informationen über den angemeldeten Account, inklusive der zugewiesenen Rollen.

Beispiel-Antwort des Identity Service
{
  "authenticated": true,
  ...
  "loginName": "miller",
  "username": "miller",
  "email_verified": true,
  "mail": "...",
  "roles": [
    "offline_access",
    "uma_authorization",
    "managers"
  ],
  "groups": []
}

In diesem Beispiel ist der Account "miller" den Rollen offline_access, uma_authorization und managers zugewiesen.

Zugriffsrecht anlegen

Mit den Informationen aus den vorigen Abschnitten können Sie nun ein Zugriffsrecht anlegen, das den Zugriff auf einen Layer nur für Nutzer:innen mit einer bestimmten Rolle erlaubt.

  1. Öffnen Sie dazu die Zugriffsrechtedatei des Dienstes, den Sie schützen wollen.

  2. Erstellen Sie ein Zugriffsrecht für die Rolle, die Zugriff auf einen Layer erlauben soll, zum Beispiel:

    "policies":[
      {
        "layers": ["hotels"],
        "roles": ["managers"]
      }
    ]

    Ersetzen Sie hotels durch den tatsächlichen Namen des Layers, auf den Sie den Zugriff beschränken wollen. Ersetzen Sie managers durch den tatsächlichen Rollennamen, der beim Identitätsanbieter verwendet wird.

  3. Speichern Sie die Datei und starten Sie den Tomcat neu.

Zugriffsrecht testen

Anmelden

Um den Rollen-basierten Zugriff zu testen, müssen Sie sich zunächst über den Identity Service anmelden:

  1. Rufen Sie im Browser die Startseite des konfigurierten Identity Service auf, zum Beispiel https://id.example.com/identity/.

  2. Klicken Sie auf den Link unter Login, zum Beispiel https://id.example.com/identity/account/login.

  3. Melden Sie sich mit Ihrem Account am Identitätsanbieter an, falls Sie dazu aufgefordert werden.

Nach erfolgreicher Anmeldung werden Sie zurück zum Self-Endpunkt des Identity Service geleitet, dessen Adresse mit /identity/account/self endet.

Geschützten Dienst aufrufen

Rufen Sie nun im Browser die URL des geschützten Dienstes auf, zum Beispiel https://secman.example.com/secman-ogc/path/to/my-services/wms?service=WMS&request=GetCapabilities. Damit der Browser die Anmeldeinformation aus dem vorigen Schritt als Cookie überträgt, müssen Sie die URL des geschützten Dienstes im selben Browser und in derselben Domäne wie die des Identity Service aufrufen. Sie müssen also z.B. https://secman.example.com/secman-ogc/…​ aufrufen, wenn der Identity Service unter https://id.example.com/…​ erreichbar ist.

Wenn Sie alles richtig konfiguriert haben, sollten Sie nun Zugriff auf den für die Rolle erlaubten Layer haben.