Single Sign-On mit Portal for ArcGIS und ArcGIS Online

Seit 4.8.0

security.manager ermöglicht Client-Applikationen, mittels Single Sign-on auf security.manager Dienste und Portal for ArcGIS (inklusive ArcGIS Online) zuzugreifen. Damit wird erreicht, dass Nutzer sich wie gewohnt am Portal anmelden und mit dem security.manager abgesicherte Dienste und Applikation nutzen können, ohne sich ein weiteres Mal einloggen zu müssen. Dazu stehen zwei Verfahren zur Verfügung, die je nach Anwendungsszenario unterschiedlich geeignet sind:

(A) ArcGIS Server Föderation

Dieses Verfahren verlangt, dass ein security.manager-geschützter ArcGIS Server als föderierter Dienst („Verbundserver“) beim Portal registriert wird. Dieses Verfahren wird empfohlen, wenn Sie geschützte Dienste in Portal-Applikationen nutzen wollen. Es wird von allen Esri Clients, inkl. ArcGIS API for JavaScript, unterstützt. Nutzer werden security.manager-seitig dadurch identifiziert, dass Clients ein ArcGIS Server Token an jede Dienstanfrage anhängen.

Dieses Verfahren kann mit ArcGIS Online nicht verwendet werden, da ArcGIS Online Diensteföderation („Verbundserver“) nicht unterstützt.
(B) security.manager Domain Cookie

Bei dieser Art der Integration von Portalnutzern wird verlangt, dass Client-Applikationen eine zusätzliche Anfrage zum security.manager schicken. Mit dieser Anfrage wird ein Domain Cookie für den Portalnutzer abgerufen, sobald ein Portal-Token für den Nutzer vorliegt. Durch diese zusätzliche Anfrage wird der Portalnutzer im security.manager identifiziert. Für nachfolgende Anfragen verwendet der Client dann das Domain Cookie, um den Nutzer zu identifizieren.

Dieses Verfahren erfordert zusätzliche Client-Logik in Form des Absendens einer zusätzlichen Anfrage. Es erlaubt aber, neben security.manager-geschützten Dienste andere Applikationen mittels Single Sign-On zu nutzen, deren Zugriff über das security.manager Domain Cookie abgesichert werden. Dieses Verfahren wird derzeit nicht direkt von den Standard Esri Clients und APIs unterstützt.

Beide Verfahren erfordern, dass security.manager und die Portal-Instanz (bzw. ArcGIS Online Organisation) miteinander „verbunden“ sind: Sobald security.manager eine Client-Anfrage erhält, müssen die Nutzerinformationen des anfragenden Nutzers auf Basis der mitgegebenen Identitätsinformationen (sei es ein Token oder das Domain Cookie) beim Portal abgerufen werden. Die Identität des Portalnutzers wird dann über den Nutzernamen einem Nutzerkonto im security.manager zugeordnet. Üblicherweise werden Portal und security.manager dasselbe LDAP oder Active Directory nutzen, so dass die Nutzerkonten auf denselben Daten beruhen. Es ist allerdings möglich, die security.manager-eigene Nutzerdatenbank zu verwenden. Dann muss sichergestellt werden, dass es für jeden Portalnutzer ein zum Nutznamen passendes Nutzerkonto im security.manager gibt.

Gemeinsame Konfiguration

1 Aktivierung der Portalintegration

Um die Portal-Integration zu aktivieren, müssen Sie eine Portal-URL spezifizieren. Dazu tragen Sie die Eigenschaft security.login.portal.url in die application.properties Konfigurationsdatei ein. Lesen Sie den Abschnitt Portalintegration, in dem alle relevanten Konfigurationsparameter beschrieben werden.

2 Verknüpfen der Nutzerkonten

Single Sign-On mit Portal for ArcGIS und ArcGIS Online wird über gleichlautende Nutzernamen erreicht. Für jeden Nutzer im Portal muss es einem gleichnamigen Nutzer im security.manager geben, bevor per Single Sign-On auf geschützte Ressourcen zugegriffen werden kann. Dies geschieht idealerweise über die Nutzung desselben LDAP oder Active Directory. Andernfalls müssen die Nutzerkonten manuell im security.manager angelegt werden.

Bei aktivierter Portalintegration werden Rollen und Zugriffsberechtigungen für geschützte Dienste weiterhin im security.manager angelegt und zugeordnet. Angenommen im Portal existiert ein Nutzer mit dem Nutzernamen p.mueller. Um Single Sign-On zu erreichen, muss im security.manager ebenfalls ein Nutzerkonto mit dem Nutzernamen p.mueller existieren. Um dem Nutzer Zugriff auf einen Dienst zu gewähren, muss eine Rolle im security.manager angelegt werden und dem Nutzer p.mueller zugeordnet werden. Weiterhin müssen Berechtigungen angelegt werden, die Zugriff auf Ressourcen geschützter Dienste erlauben.

ArcGIS Server-Föderation („Verbundserver“)

Dieses Verfahren kann mit ArcGIS Online nicht verwendet werden, da ArcGIS Online Diensteföderation („Verbundserver“) nicht unterstützt.

Um einen geschützten ArcGIS Server zu föderieren, sind folgende zwei Schritte notwendig:

  1. Registrieren des „agstoken“-Endpunktes am Portal

  2. Kopieren des bei der Registrierung erzeugten Server Key in den security.manager

1 Dienstregistrierung am Portal

  1. Öffnen Sie in einem Browser https://[myportal.host.com]/[WebAdaptorName]/sharing/rest

  2. Melden Sie sich mit einem Portal-Administrator an

  3. Öffnen sie im selben Browser https://[myportal.host.com]/[WebAdaptorName]/sharing/rest/portals/0123456789ABCDEF/servers/register

  4. Tragen Sie die notwendigen Informationen ein:

    register service1

    Name: Beliebiger Name für den zu föderierenden Dienst
    URL: Basis-URL des "agstoken"-Endpunktes des geschützten Dienstes, z.B. http://[mysecman.host.com]/wss/service/ags-relay/serviceA/agstoken/arcgis
    Is hosted: false
    Server Type: ArcGIS
    Server Admin URL: Dieselbe URL wie für das Feld URL, z.B. http://[mysecman.host.com]/wss/service/ags-relay/serviceA/agstoken/arcgis

  5. Klicken Sie Register

  6. Kopieren Sie den Server Secret Key

    register service2
    Der Server Secret Key wird einmalig angezeigt. Sie können ihn später nicht wiederholt abfragen. Wenn Sie den Schlüssel zu einem späteren Zeitpunkt benötigen, müssen Sie die Registrierung des Dienstes erneut durchführen.

2 Kopieren des Server Key

  1. Öffnen Sie in einem Browser https://[mysecman.host.com]/administration

  2. Melden Sie sich mit einem Administrator-Nutzer an

  3. Navigieren Sie zu Geschützte Dienste

  4. Bearbeiten Sie den Dienst, den Sie gerade registriert haben

  5. Stellen Sie sicher, dass das Authentifizierungsverfahren agstoken aktiviert ist und tragen die den Server Key ein:

    agstoken server key
  6. Klicken Sie Save

3 Zugriff auf geschützte Dienste

Sobald die Föderation eingerichtet ist und Rollen und Rechte im security.manager definiert wurden, können Sie den geschützten Dienst wie jeden anderen föderierten ArcGIS Server verwenden.

Nachfolgend finden Sie Beispiele für die Nutzung von abgesicherter, föderierter Dienstnutzung.

Um einen föderierten Dienst in ArcGIS Desktop als GIS Server Ressource einzuladen, verwenden Sie eine URL wie diese:

http://[mysecman.host.com]/wss/service/ags-relay/serviceB/agstoken/arcgis/services

Um einen MapServer als Element im Portal for ArcGIS zu registrieren, verwenden Sie etwa folgende URL:

http://[mysecman.host.com]/wss/service/ags-relay/serviceB/agstoken/arcgis/rest/services/USA/MapServer

4 Einschränkungen

Nutzung des Service Directory

Derzeit ist es nicht möglich, die HTML-Seiten des Service Directory eines über "agstoken" abgesicherten Dienstes direkt im Browser, etwa durch den Aufruf der URL http://[mysecman.host.com]/wss/service/ags-relay/serviceB/agstoken/arcgis/services, zu durchsuchen.

Anzeige des Föderationsstatus

Wenn Sie als Administrator in das Portal eingeloggt sind, kann der Status der Föderation mit den einzelnen Diensten unter Eigene Organisation > Einstellungen bearbeiten > Server > Verbundserver angezeigt werden. Die Dienste, die mit security.manager föderiert wurden, werden ebenfalls angezeigt. Allerdings wird der Verbindungsstatus immer mit einem Ausrufezeichen oder einem Fragezeichen dargestellt, was eine fehlgeschlagene Föderation vermuten lässt. Diese Statusinformation kann jedoch ignoriert werden. Derzeit meldet security.manager nicht den tatsächlichen Status an das Portal zurück.

Um ein Portal-Token in ein Domain-Cookie umzuwandeln, muss der Client das Portal-Token an den Endpunkt /token/cookie des security.manager senden:

Beispiel einer Portal-Token Anfrage
https://[HOST][:PORT]/administration/token/cookie?portaltoken=02YuGX3aoYxRPzcylglzIEPwcRA-2pKCErNdKXHoAzVp-B826fNrCUTTfTi9uqc...

security.manager gibt eine Antwort zurück, die das Domain-Cookie schreibt.

Beispielantwort
HTTP/1.1 200 OK
Server Apache-Coyote/1.1 is not blacklisted
Server: Apache-Coyote/1.1
Set-Cookie: ct_SSO=*|040ee5fb86c3772c46d77413c8f65474|586eeb64716ec700bab9c83ad8e4dce1141ee45f; Version=1; Comment=""; Path=/
Content-Length: 0
Date: Mon, 01 Jan 2017 00:00:01 GMT
Im Fehlerfall wird eine leere HTTP Antwort mit Status-Code 403 zurück gegeben. Dies kann der Fall sein, wenn das Portal-Token insgesamt ungültig oder dessen zeitliche Gültigkeit abgelaufen ist.