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:
- Der Client stellt eine Anforderung an einen gesicherten ArcGIS-Web-Service.
- Der ArcGIS-Web-Service antwortet, dass ein Token erforderlich ist, und stellt die URL des Token-Services bereit.
- Der Client fordert einen Token vom Token-Service an, indem er einen gültigen Benutzernamen und ein Kennwort angibt.
- 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.
- Der Client sendet eine Anforderung an den gesicherten ArcGIS-Web-Service und übermittelt den Token zusammen mit der Anforderung.
- 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.
ArcGIS Desktop (ArcMap, ArcCatalog): Der Benutzer gibt einen gültigen Benutzernamen und ein gültiges Kennwort in das Verbindungsdialogfeld ein. Wenn kein Benutzername oder Kennwort eingegeben wird oder wenn die Anmeldung falsch ist, wird der Benutzer von der Software aufgefordert, korrekte Anmeldeinformationen einzugeben. Nachdem ein korrekter Benutzername mit Kennwort eingegeben wurde, kann der Benutzer den Service normal nutzen.
ArcGIS Explorer: Identisches Verhalten wie bei ArcGIS Desktop.
Web ADF-Anwendungen (Java und Microsoft .NET Framework): Die Webanwendung verwendet die zuvor in ArcGIS Manager oder in der Entwicklerumgebung eingegebenen Anmeldeinformationen. In ArcGIS Manager werden der Benutzername und das Kennwort beim Hinzufügen des GIS-Servers während der Erstellung einer Webanwendung eingegeben. In einer Entwicklerumgebung wie Microsoft Visual Studio werden der Benutzername und das Kennwort beim Hinzufügen der GIS-Ressource zur Anwendung eingegeben.
JavaScript-Anwendungen (ArcGIS API for JavaScript, ArcGIS Extension for Google Maps API, ArcGIS Extension for Bing Maps und andere REST-basierte Anwendungen): Der Client muss ein Token bereitstellen können, um auf den Service zuzugreifen, der ein Token erfordert. In den meisten Fällen ist es nicht günstig, den Benutzernamen und das Kennwort für den Service in das clientseitige JavaScript einzubetten. Stattdessen kann ein langlebiger Token vom Token-Server abgerufen und in die clientseitige Seite eingebunden werden. Der Token ist dann in der Anforderung für den Service enthalten. Einzelheiten zum Abrufen des Token finden Sie unter Webseite GetToken. Informationen zum Anfordern einer Ressource mit einem Token finden Sie in der entsprechenden API-Hilfe.
SOAP-basierte Anwendungen: Anwendungen, die ein SOAP-Toolkit verwenden, um auf die Web-Service-Beschreibungssprache (WSDL) des GIS-Web-Services zuzugreifen, ohne die ADF-Verbindungsklassen zu verwenden, müssen Token explizit abrufen und verwenden. Informationen und Beispiele hierzu finden Sie in der ArcGIS Server-Entwickler-Hilfe.
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:
Kurze Ablaufzeit (Standardablaufzeit)
Der Token-Service gibt einen Token mit einer kurzen Ablaufzeit aus, wenn der Client beim Anfordern eines Token keinen Timeout-Wert angibt bzw. keine Client-Kennung bereitstellt.
ArcGIS Desktop-Clients und Web ADF-Anwendungen nutzen beim Verwenden von gesicherten ArcGIS-Web-Services Token mit kurzen Ablaufzeiten.
Lange Ablaufzeit (maximale Ablaufzeit)
Dies ist die maximale Ablaufzeit, die der Token-Service ausgeben kann. Alle Token-Anforderungen, die bei der Anforderung eine Ablaufzeit für die Token angeben, müssen eine Client-ID bereitstellen. Wenn ein Client eine Client-ID bereitstellt, kann er ein Token mit einer Ablaufzeit zwischen einer Minute und der langen Ablaufzeit (maximalen Ablaufzeit) anfordern. Wird ein Token mit einer Ablaufzeit angefordert, die länger ist als das Maximum, wird eine Fehlermeldung angezeigt.
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:
- Benutzername und Kennwort: Benutzeranmeldeinformationen, die auf ArcGIS Server für die ArcGIS-Web-Services gültig sind. Gültige Benutzer sind jene, die mit ArcGIS Server Manager im Fenster Einstellungen konfiguriert wurden.
- Client-ID: Eine Kennung für den Computer, der die Anforderung an den Web-Service sendet. Die Client-ID ist erforderlich, um einen Langzeit-Token zu erhalten, der über einen längeren Zeitraum gültig ist. Dies ist in der Regel beim Einsatz der ArcGIS API for JavaScript erforderlich. Die Client-ID kann mit einer der beiden folgenden Methoden angegeben werden:
- IP-Adresse: Damit wird der Token an den angegebenen Computer gebunden. Verwenden Sie diese Option, wenn der Token immer auf dem angegebenen Computer verwendet wird, z. B. in einer Webanwendung, die mit der ArcGIS Server SOAP-API erstellt wurde, wobei der Server Anforderungen an den ArcGIS-Web-Service sendet. Dieser Ansatz kann auch verwendet werden, wenn Sie ArcGIS Server testen und Probleme damit beheben.
- HTTP-Referrer: Dies ist die URL der Seite, von der aus die Anforderung an den ArcGIS-Web-Service gesendet wird. Verwenden Sie diesen Ansatz, wenn Sie eine Anwendung mit der ArcGIS Server API for JavaScript oder anderen REST-basierten Anwendungen erstellen, bei der einzelne Clients Karten und Daten direkt vom ArcGIS-Web-Service anfordern.
- Ablauf: Das Ablaufdatum für einen Token (zwischen einer Minute und dem Maximum).
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.
Hinweis: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.
Hinweis: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
Hinweis: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.