Token und Token-Services

Ein Token wird verwendet, wenn für die ArcGIS Server-Sicherheit die Option "ArcGIS Managed Authentication" konfiguriert ist. Ein Token repräsentiert die Identität eines Benutzers gegenüber einem ArcGIS-Web-Service. Ein Token wird von einem Token-Service (einem Web-Service) für eine Client-Anwendung ausgegeben. Eine Client-Anwendung muss einen gültigen Token bereitstellen, um auf einen gesicherten ArcGIS-Web-Service zuzugreifen.

ArcGIS Managed Authentication – basierend auf Token

Die folgende Ereignisabfolge findet immer dann statt, wenn eine Client-Anwendung versucht, auf einen gesicherten ArcGIS-Web-Service zuzugreifen:

  1. Der Client stellt eine Anforderung an einen gesicherten ArcGIS-Web-Service.
  2. Der ArcGIS-Web-Service antwortet, dass ein Token erforderlich ist, und stellt die URL des Token-Services bereit.
  3. Der Client fordert einen Token vom Token-Service an, indem er einen gültigen Benutzernamen und ein Kennwort angibt.
  4. Der Token-Service überprüft den Benutzernamen und das Kennwort und gibt dem Client einen Token zurück, falls Benutzername und Kennwort gültig sind.
  5. Der Client sendet eine Anforderung an den gesicherten ArcGIS-Web-Service und übermittelt den Token zusammen mit der Anforderung.
  6. Der ArcGIS-Service überprüft den Token und sendet die Antwort auf die Dienstanforderung an den Client zurück.

Verwenden von gesicherten GIS-Services mit Token

Wenn der Token-Service aktiviert wird und für den Zugriff auf ArcGIS-Web-Services erforderlich ist, muss die Client-Software in der Lage sein, den Token wie oben beschrieben abzurufen und zu verwenden. ESRI Client-Anwendungen wie ArcGIS Desktop verarbeiten den Prozess zum Abrufen von Token vom Token-Service und zum Vorlegen von Token gegenüber dem gesicherten ArcGIS-Web-Service automatisch. Das Verhalten von ArcGIS-Clients beim Herstellen einer Verbindung mit einem ArcGIS Server Internet-Service, der eine Token-basierte Authentifizierung erfordert, wird nachfolgend beschrieben.

HinweisHinweis:

In Webanwendungen gibt der Endbenutzer der Anwendung im Browser keine Anmeldeinformationen für den Zugriff auf den ArcGIS-Service ein. Die Anmeldeinformationen für den ArcGIS-Web-Service werden beim Erstellen der Webanwendung in ArcGIS Server Manager oder der Eclipse/NetBeans-IDE angegeben. Diese Anmeldeinformationen werden für alle Benutzer der Webanwendung verwendet. Die Webanwendung selbst wird möglicherweise durch eine Anmeldung gesichert, die allerdings getrennt überprüft wird. Die Sicherheit auf Webanwendungsebene kann mit ArcGIS Server Manager konfiguriert werden. Durch benutzerdefinierte Programmierung können Anmeldeinformationen vom Endbenutzer an den ArcGIS-Web-Service weitergeleitet werden. Weitere Informationen finden Sie in der ArcGIS Server-Entwickler-Hilfe.

Konfigurieren des Token-Services

Ein Token-Service ist ein Web-Service, der als Teil von ArcGIS Server installiert ist. Er kommuniziert mit dem Haupt- und Sicherheitsspeicher, in denen Benutzer- und Rolleninformationen verwaltet werden, um eingehende Anforderungen für Token zu authentifizieren. Sobald die Benutzeranmeldeinformationen authentifiziert sind, wird ein Token ausgegeben, das dann die Nutzung eines gesicherten ArcGIS-Web-Services ermöglicht.

Bevor Sie einen Token-Service auf der ArcGIS Server-Instanz starten, müssen Sie ihn konfigurieren. Sie konfigurieren einen Token-Service, indem Sie in ArcGIS Manager zur Seite Einstellungen im Fenster Sicherheit navigieren und auf die Registerkarte Sicherheit für GIS-Services klicken. Wählen Sie die Option Authentifizierung mittels ArcGIS-Token-Service aus, und klicken Sie auf Konfigurieren, um einen Token-Service auf der ArcGIS Server-Instanz zu konfigurieren und zu starten.

Weitere Informationen zu Token-Timeout-Werten und gemeinsam verwendeten Schlüsseln finden Sie unter "Timeout von Token" und "Gemeinsam verwendeter Schlüssel für den Token-Service" weiter unten.

Sichere Verbindung (HTTPS/SSL) für Token-Service erforderlich

Zum Anfordern eines Token vom Token-Service ist standardmäßig eine sichere Verbindung mit HTTPS (Secure Sockets Layer oder SSL) erforderlich. HTTPS verschlüsselt den Benutzernamen und das Kennwort während der Übertragung. Der Client muss HTTPS verwenden, wenn er mit der Standardmethode, bei der der Benutzername und das Kennwort in der Abfragezeichenfolge enthalten sind (von ArcGIS Desktop, den Web ADF-Steuerelementen und anderen Clients verwendet), oder über die Webseite GetToken.html einen Token anfordert.

Zu internen Testzwecken kann die Notwendigkeit von HTTPS deaktiviert werden, damit Token mit nicht gesichertem HTTP abgerufen werden können. Beachten Sie, dass Kennwörter, die mit HTTP gesendet werden, von jedem, der eine Verbindung mit dem Netzwerk hergestellt hat, abgefangen werden können.

Timeout von Token

Wenn der Token-Service aktiviert ist, können Sie in ArcGIS Manager auf der Seite Einstellungen im Fenster Sicherheit ein Timeout für den Token festlegen, indem Sie auf der Registerkarte Sicherheit für GIS-Services auf Konfigurieren klicken. Um die Sicherheit des Token aufrechtzuerhalten, ist jeder Token mit einer Ablaufzeit verknüpft. Der Endbenutzer erhält möglicherweise eine Timeout-Meldung oder eine andere Fehlermeldung, wenn ein abgelaufener Token verwendet wird.

Token mit kürzeren Ablaufzeiten sind sicherer, da ein manipulierter Token nur innerhalb eines kurzen Zeitfensters missbraucht werden kann. Eine kurze Ablaufzeit bedeutet jedoch auch, dass Anwendungen Token häufiger wiederverwenden müssen, wodurch sich der Aufwand erhöht.

Beim mit ArcGIS Server installierten Token-Service müssen Sie während der Konfiguration zwei Ablaufzeiten angeben:

JavaScript-Entwickler, die gesicherte Services verwenden wollen, können mit der Webseite GetToken einen Token mit einer bestimmten Ablaufzeit anfordern.

Weitere Informationen zum Anfordern von Token finden Sie unter "Anfordern von Token" weiter unten.

Gemeinsam verwendeter Schlüssel für den Token-Service

Der gemeinsam verwendete Schlüssel für den Token-Service wird zum Verschlüsseln des Token benutzt. Der Token wird mit dem Benutzernamen und anderen Informationen verschlüsselt und an den Client gesendet. Wenn der Client einen ArcGIS-Web-Service anfordert, wird der Token in diese Anforderung eingefügt. Der Server verwendet dann den gemeinsam verwendeten Schlüssel, um den Token zu entschlüsseln. Der Server überprüft die Identität des Clients, bevor er den Zugriff auf den ArcGIS-Web-Service zulässt. Der gemeinsam verwendete Schlüssel stellt sicher, dass der Server den Token erstellt hat.

Da der gemeinsam verwendete Schlüssel für die Sicherstellung der Identität und der Autorisierung des Clients entscheidend ist, muss der Schlüssel auf einen Einzelwert der richtigen Länge festgelegt werden. Sie legen den gemeinsam verwendeten Schlüssel fest, indem Sie zur Seite Einstellungen im Fenster Sicherheit navigieren und auf der Registerkarte Sicherheit für GIS-Services auf Konfigurieren klicken. Legen Sie im daraufhin angezeigten Dialogfeld Lokalen Token-Service konfigurieren den Wert für die Eigenschaft Gemeinsam verwendeter Schlüssel für Verschlüsselungstoken fest. Für den Schlüssel sollten 16 Zeichen festgelegt werden (alle Zeichen nach dem 16. Zeichen werden nicht verwendet). Es wird empfohlen, einen Satz zufälliger Zeichen für den Schlüssel zu verwenden. Alle Zeichen sind zulässig, einschließlich nicht alphanumerischer Zeichen. Der Schlüssel sollte auf einen Wert festgelegt werden, der von niemandem, der den Token abfangen könnte, leicht zu erraten ist. Da der Schlüssel nicht von den Benutzern selbst verwendet wird und sie ihn sich auch nicht merken müssen, ist die Komplexität anders als bei Kennwörtern hier kein Problem.

Der Token wird mit der AES-Verschlüsselungsmethode (Advanced Encryption Standard), die auch Rijndael genannt wird, mit dem Schlüssel verschlüsselt. Die 16 Zeichen im Schlüssel stellen die 128 Bits dar, die zum Verschlüsseln verwendet werden.

Weitere Informationen zur Verschlüsselung und zu AES finden Sie in Sicherheitsreferenzen oder erhalten Sie von Mitarbeitern Ihres Unternehmens, die über Kenntnisse in Sicherheit und Kryptografie verfügen.

Webseite GetToken

Eine HTML-Seite wird mit dem Token-Service bereitgestellt, um das manuelle Anfordern von Token zu ermöglichen. In der Regel ist dies nur beim Erstellen von Webanwendungen mit der ArcGIS Server API for JavaScript oder für Tests und zur Problembehandlung erforderlich. Clients, z. B. Web ADF-Anwendungen und ArcGIS Desktop, rufen Token automatisch ab und benötigen diese Seite nicht. Die Seite GetToken befindet sich auf der ArcGIS Server-Instanz unter https://<Webserver>:<Port>/arcgis/tokens/gettoken.html (wenn Sie den Token-Service exportiert und auf einem Webserver bereitgestellt haben, ersetzen Sie "<Webserver>" durch den Webserver-Domänennamen und "arcgis/token" durch den Kontextpfad zur bereitgestellten Anwendung).

Um die Seite GetToken zu verwenden, geben Sie die folgenden Informationen ein:

Token-Anforderungsformat

Um einen Token von einem Server abzurufen, führen Sie eine URL-Anforderung aus. Die Clients, die mit Token arbeiten, z. B. ArcGIS Desktop, Web ADF, Web API und mobile Clients, verwenden diesen Ansatz ebenso wie die Seite GetToken, die im vorherigen Abschnitt beschrieben wurde.

Anfordern eines Tokens mithilfe des Token-Endpunkts

Sie können einen Token mithilfe des Token-Endpunkts anfordern. Die folgende URL könnte z. B. verwendet werden, um einen Token von einem Server abzurufen:

https://myserver.example.com/arcgis/tokens?request=gettoken&username=myuser&password=secret1&clientid=ref.myserver.example.com&expiration=1440&f=json&callback=myfunction

Diese Anforderung würde einen Token für den Benutzer myuser für eine Webanwendung abrufen, die mit einer Gültigkeitsdauer von einem Tag (1440 Minuten) auf dem gleichen Server (myserver.example.com) ausgeführt wird.

Die folgenden Parameter können in der Abfragezeichenfolge angegeben werden:

  • request: Für diesen Parameter wird immer der Wert gettoken angegeben (request=gettoken). Erforderlich.

  • username:: Der Benutzername eines im System eingerichteten Benutzerkontos. Erforderlich.

  • password: Das Kennwort eines im System eingerichteten Benutzerkontos. Erforderlich.

    HinweisHinweis:

    HTTPS/SSL verschlüsselt den Benutzernamen und das Kennwort während der Token-Übertragung. Weitere Informationen erhalten Sie oben im Abschnitt Sichere Verbindung (HTTPS/SSL).

  • clientid: Optionaler Parameter zur Identifizierung des Clients. Trennen Sie Typ und Wert durch einen Punkt (.). Wenn clientid nicht angegeben wird, wird für den Token eine Timeout-Einstellung für kurzlebige Token verwendet.

    Werte:

    • ip: IP-Adresse des Clients.

      Beispiel: clientid=ip.10.14.102.85

    • ref: Die Start-URL der Webanwendung, in der dieser Token verwendet wird. Dieser Parameter muss angegeben werden, wenn der Wert des Client-Parameters "referrer" ist.

      Beispiel: clientid=ref.http://myserver/mywebapp

    • requestip: Wenn der Wert als requestip (Anforderungs-IP) angegeben wird, wird der Token für die IP generiert, von der die Anforderung ausgegangen ist.

      Beispiel: clientid=requestip

  • expiration: Optionaler Parameter, der angibt, wie lange der Token ab dem Zeitpunkt seiner Ausstellung gültig ist. Der Wert wird in Minuten angegeben. Wenn dieser Parameter nicht angegeben wird, wird die Timeout-Einstellung für kurzlebige Token verwendet.

  • f: Neu in ArcGIS Server 10.0 Service Pack 1 (SP1). Dieser optionale Parameter gibt das Ausgabeformat an. Akzeptiert den Wert "json", um das Ergebnis in einem json-Format zurückzugeben. Wenn dieser Parameter nicht angegeben ist, wird der Token in einem Textformat generiert.

    Beispiel: {"token":"hjSXkAQl2uczsyE9T3NDvhcso6WVYWSAqBcn1GFB-L8.","expires":"1289513369381"}

    Die Ablaufzeit wird in Millisekunden seit 1. Januar 1970 dargestellt.

  • callback: Optionaler Parameter zur Angabe des Namens der Rückruffunktion. Wenn callback enthalten ist, wird die Ausgabe immer in einem json-Format zurückgegeben.

Anfordern eines Tokens mithilfe des generateToken-Endpunkts

In ArcGIS Server 10.0 Service Pack 1 (SP1) können Sie nun auch einen Token mithilfe des generateToken-Endpunkts anfordern. Die folgende URL könnte z. B. verwendet werden, um einen Token von einem Server abzurufen:

https://myserver.example.com/arcgis/tokens/generateToken?username=myuser&password=mypass&client=referer|ip|requestip&referer=referer&ip=ipaddress&expiration=expiration&f=json&callback=myfunction

Die folgenden Parameter können in der Abfragezeichenfolge angegeben werden:

  • username: Der Benutzername, für den der Token generiert wird. Erforderlich.

  • password: Das Kennwort für den Benutzernamen. Erforderlich.

    HinweisHinweis:

    HTTPS/SSL verschlüsselt den Benutzernamen und das Kennwort während der Token-Übertragung. Weitere Informationen erhalten Sie oben im Abschnitt Sichere Verbindung (HTTPS/SSL).

  • clientid: Optionaler Parameter zur Identifizierung des Clients. Wenn clientid nicht angegeben wird, wird für den Token eine Timeout-Einstellung für kurzlebige Token verwendet.

    Werte:

    • referer: Die Start-URL der Webanwendung, in der dieser Token verwendet wird. Dieser Parameter muss angegeben werden, wenn der Wert des Client-Parameters "referrer" ist.

      Beispiel: referer=http://myserver/mywebapp

    • ip: Die IP-Adresse des Computers, von dem aus der Token verwendet wird. Dieser Parameter muss angegeben werden, wenn der Wert des Client-Parameters "ip" ist.

      Beispiel: ip=10.14.102.85

    • requestip: Wenn der Wert als requestip (Anforderungs-IP) angegeben wird, wird der Token für die IP generiert, von der die Anforderung ausgegangen ist.

  • expiration: Optionaler Parameter, der angibt, wie lange der Token ab dem Zeitpunkt seiner Ausstellung gültig ist. Der Wert wird in Minuten angegeben. Der Ablauf darf nicht länger als die maximal zulässige Zeit für einen langlebigen Token sein.

    Beispiel: expiration=60

    HinweisHinweis:

    Wenn Client und Ablaufparameter nicht angegeben werden, wird ein kurzlebiger Token generiert, und der Ablauf verwendet die Timeout-Einstellung für kurzlebige Tokens.

  • f: Optionaler Parameter zur Angabe des Ausgabeformats. Akzeptiert den Wert "json", um das Ergebnis in einem json-Format zurückzugeben. Wenn dieser Parameter nicht angegeben ist, wird der Token in einem Textformat generiert.

    Beispiel: {"token":"hjSXkAQl2uczsyE9T3NDvhcso6WVYWSAqBcn1GFB-L8.","expires":"1289513369381"}

    Die Ablaufzeit wird in Millisekunden seit 1. Januar 1970 dargestellt.

  • callback: Optionaler Parameter zur Angabe des Namens der Rückruffunktion. Wenn der callback-Parameter enthalten ist, wird die Ausgabe immer in einem json-Format zurückgegeben.


3/6/2012