Konfigurieren des Token-Services

Der Token-Service authentifiziert Benutzer, wenn die ASP.NET-Authentifizierung verwendet wird (anders ausgedrückt, wenn SQL Server oder ein benutzerdefinierter Anbieter für die Benutzer- und Rollenspeicher verwendet wird). Ein Token fungiert als Schlüssel für den Zugriff auf einen sicheren Service und wird nur authentifizierten Benutzern übermittelt. Der Token ist eine Zeichenfolge mit verschlüsselten Informationen, die den Namen des Benutzers, die Ablaufzeit und andere Informationen enthalten. Der Token wird dem authentifizierten Benutzer durch die unter <ArcGIS Server-Instanz>/Tokens verfügbaren Web-Services übermittelt.

Token stellen einen bestimmten Grad an Sicherheit für die Web-GIS-Services bereit, sind aber nicht so sicher wie andere Methoden, z. B. die integrierte Windows-Authentifizierung. Die Sicherheit eines Systems mit Token hängt von der Steuerung des Zugriffs auf die Token ab. Anforderungen nach Token erfordern standardmäßig eine sichere Verbindung (HTTPS), HTTPS sollte aber auch für alle Anforderungen, die den Token verwenden, erforderlich sein. Dies würde bedeuten, dass HTTPS für den Ordner, der die geschützten GIS-Services enthält, als erforderliches Zugriffsprotokoll festgelegt wird. Sie können HTTPS für einen Services-Ordner als erforderliches Protokoll festlegen, indem Sie die Ordnereigenschaften in Manager oder in ArcCatalog öffnen und das Feld Verschlüsselter Webzugriff erforderlich aktivieren.

Der Token-Service ist ein Web-Service, der während der Installation von ArcGIS Server zusammen mit der ArcGIS-Webanwendungen-Komponente installiert ist. Bei der aktuellen Version der Software wird der Token-Service bei Bedarf automatisch aktiviert. Der Token-Service wird aktiviert, wenn Sie angeben, dass Benutzer entweder in Microsoft SQL Server oder einem benutzerdefinierten Anbieter der Mitgliedschaft (siehe Überblick über das Einrichten von Benutzern und Rollen) gespeichert werden. Der Token-Service wird nicht aktiviert oder verwendet, wenn Sie angeben, dass Windows-Benutzerkonten zur Authentifizierung der Benutzer von GIS-Services verwendet werden, sofern Sie nicht SQL Server oder einen benutzerdefinierten Anbieter für Rollen verwenden und Token zur Benutzerauthentifizierung aktivieren.

Wenn der Token-Service aktiviert worden ist, können Sie das maximale zulässige Timeout für Token festlegen. Diese Einstellung wird in Timeout von Token beschrieben. Zudem können Sie die Verschlüsselung für die Installation auf einen Einzelwert festlegen; nähere Informationen hierzu finden Sie unter Gemeinsam verwendeter Schlüssel für den Token-Service. Dies sind die einzigen für den Token-Service verfügbaren Konfigurationsschritte.

Wenn für einen GIS-Service Token erforderlich sind, verwendet die Client-Software den GIS-Service nach folgendem Muster:

  1. Der Client sendet eine Anforderung an den GIS-Service.
  2. Der GIS-Server 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 anhand der Datenbank (oder dem benutzerdefinierten Anbieter der Mitgliedschaft) und gibt dem Client einen Token zurück, falls Benutzername und Kennwort gültig sind.
  5. Der Client sendet eine Anforderung an einen GIS-Service und übermittelt den Token zusammen mit der Anforderung.
  6. Der GIS-Server überprüft den Token und sendet die Antwort auf die Dienstanforderung an den Client zurück.

Die Frage ist, wie Sie vorgehen, wenn Benutzer in der Lage sein sollen, auf Services zuzugreifen, ohne einen Token bereitstellen oder sich anmelden zu müssen? Sie können den anonymen Zugriff auf Services oder Ordner zulassen, indem Sie die Jeder-Rolle verwenden (siehe Festlegen von Berechtigungen für einen Service oder einen Ordner).

Wenn der Token-Service aktiviert wird und für den Zugriff auf GIS-Services erforderlich ist, muss die Client-Software in der Lage sein, den Token wie oben beschrieben abzurufen und zu verwenden. Esri Clients rufen Token automatisch ab und verwenden sie. Wenn der Client eine Verbindung mit einem ArcGIS Server Internet-Service herstellt, für den eine Anmeldung erforderlich ist, dann verhält er sich wie folgt:

Bei Verwendung eines Tokens in Webanwendungen ist zu beachten, der der Endbenutzer der Anwendung im Browser keine Anmeldeinformationen für den GIS-Service eingibt. Die Anmeldeinformationen für den Service müssen im Voraus in Manager oder der Entwicklungsumgebung angegeben werden. Für alle Benutzer der Webanwendung werden dieselben Anmeldeinformationen verwendet. Die Webanwendung selbst wird dadurch geschützt, dass eine Anmeldung vorgeschrieben wird, diese Anmeldung wird jedoch auf der Grundlage der Sicherheitskonfiguration für die Webanwendung in Manager oder auf andere Weise getrennt überprüft. Durch benutzerdefinierte Programmierung können Anmeldeinformationen vom Endbenutzer zum GIS-Service weitergeleitet werden. Weitere Informationen hierzu finden Sie in der Entwickler-Hilfe. Beim Einsatz der IIS-Authentifizierung (in Windows gespeicherte Benutzer) werden die Anmeldeinformationen automatisch von der Anwendung an die zugrunde liegenden Web-Services übergeben.

Mit Manager können Sie einige Parameter für den Token-Service festlegen: Ablaufzeiten für Token (sowohl für kurzlebige als auch für langlebige Token) und den gemeinsam verwendeten Schlüssel für die Verschlüsselung. Diese Einstellungen werden unten erklärt.

Timeout von Token

Wenn der Token-Service aktiviert worden ist, können Sie über Sicherheitseinstellungen in Manager das Timeout für Token festlegen. Das Timeout bestimmt den Zeitraum, über den der Token gültig ist. Der Endbenutzer erhält möglicherweise eine Timeout-Meldung oder eine andere Fehlermeldung, wenn ein abgelaufener Token verwendet wird.

Kürzere Token-Timeouts bieten höhere Sicherheit, können aber dazu führen, dass bei legitimierten Benutzern während der Verwendung von Services Timeouts auftreten, wenn die Anwendung Token-Timouts nicht erkennt und keinen neuen Token abruft (Desktop- und ADF-Clients können neue Token beziehen). Für Token wird eine Timeout-Einstellung festlegt, um ihre unbefugte Verwendung einzuschränken. Wenn es einem Hacker gelingt, die Kommunikation zwischen dem autorisierten Benutzer und dem Server zu überwachen, könnte der Token vom Hacker entwendet werden. Wenn ein Token abgefangen wird, schränkt das Timeout seine Nutzungsdauer ein. Um die Sicherheit zu erhöhen, sollten Sie daher das Timeout von Token auf einen kürzeren Zeitraum festlegen. Der Nachteil eines kurzen Token-Timeouts ist, dass der Entwickler vor Ablauf des Tokens einen neuen Token in die Anwendung einbetten muss.

Wenn Sie eine benutzerdefinierte Anwendung schreiben, sollte diese das Token-Timeout erkennen und eine entsprechende Meldung ausgeben oder einen neuen Token abrufen. Weitere Informationen hierzu finden Sie in der Entwickler-Hilfe.

Auf der Seite Sicherheit > Einstellungen werden zwei Token-Ablaufzeitfenster definiert:

Eine gute Möglichkeit, die Entwendung und die unbefugte Verwendung von Tokens zu verhindern, besteht darin, die Verwendung von HTTPS (SSL) für die gesamte Kommunikation mit GIS-Services vorzuschreiben. Hierzu verwenden Sie eine sichere Kommunikation (SSL) für die ArcGIS-/Service-Webanwendung. Anweisungen zum Verwenden von HTTPS (SSL) für eine Anwendung in IIS finden Sie in Einrichten von SSL.

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 GIS-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 GIS-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 eindeutigen Wert der richtigen Länge festgelegt werden. Wenn der Token-Service aktiviert wird, legt Manager den gemeinsam verwendeten Schlüssel auf einen Zufallswert fest. Sie können den Schlüssel, falls gewünscht, auch selbst festlegen. Um den gemeinsam verwendeten Schlüssel festzulegen, wählen Sie in Manager die Option Sicherheit > Einstellungen, und klicken Sie unter der Überschrift "Token-Service" auf die Schaltfläche Einstellungen. Legen Sie im Dialogfeld Einstellungen, das daraufhin angezeigt wird, den Wert für Freigegebener Schlüssel 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 die Benutzer den Schlüssel weder verwenden noch ihn sich 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 zum AES-Standard finden Sie in Sicherheitsreferenzen oder erhalten Sie von Mitarbeitern Ihres Unternehmens, die über Kenntnissen in Sicherheit und Kryptografie verfügen.

Webseite GetToken

Einer HTML-Seite wird der 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 JavaScript API 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 dem Webserver unter https://<webserver>/ArcGIS/Tokens/gettoken.html (bzw. wenn Sie ArcGIS unter einem benutzerdefinierten Instanzennamen installiert haben, ersetzen Sie ArcGIS durch diesen Namen).

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

Wenn Sie einen möglichen Missbrauch der Seite GetToken befürchten, können Sie sie entfernen oder mit IIS-Manager oder Dateisystemberechtigungen den Zugriff darauf einschränken. Beachten Sie, dass Token-Anforderungen auch dann noch an den Token-Service übermittelt werden können, wenn die Seite GetToken nicht verfügbar ist. Sie verwenden hierzu die gettoken-Anforderung für den Ordner und das Anforderungsformat, das im nächsten Abschnitt beschrieben wird.

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 unten 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 unten 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.

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

Zum Anfordern eines Tokens 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 die Abfragezeichenfolge aufgenommen werden müssen (die von ArcGIS Desktop, den Web ADF-Steuerelementen und anderen Clients verwendet wird), oder über die Webseite GetToken.html einen Token anfordert.

Nur zu internen Testzwecken kann die Anforderung für 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. Der Einsatz von HTTP für Token sollte nur dann auf einem Entwicklungsserver erforderlich sein, wenn die Richtlinien der Organisation die Installation des IIS-Webservers auf dem Entwicklungscomputer verbieten. Unter diesen Umständen wird in der Regel der dateibasierte Webserver von Visual Studio (Cassini), der die Verwendung von SSL/HTTPS nicht unterstützt, zum Entwickeln verwendet. Wenn IIS verfügbar ist, sollte stets SSL verwendet werden, um das System vor der Entwendung und der unbefugten Verwendung von Benutzernamen und Kennwörtern zu schützen. Informationen zum Einrichten von SSL finden Sie unter Einrichten von SSL.

Um den Token-Service so zu konfigurieren, das nicht gesicherte HTTP-Anforderungen für Token zulässig sind, führen Sie folgende Schritte aus:

  1. Öffnen Sie die Datei <Webserverstammverzeichnis>\ArcGIS\Tokens\web.config mit einem Text- oder XML-Editor (wenn sich die ArcGIS-Instanz nicht im Standardverzeichnis C:\Inetpub\wwwroot\ArcGIS befindet, wechseln Sie zum Speicherort der ArcGIS-Instanz).
  2. Suchen Sie die folgenden Tags im Abschnitt <appSettings>. Wenn die Tags nicht vorhanden sind, fügen Sie sie hinzu.
    <appSettings>
    	<add key="RequireSSL" value="True" />	
    	<add key="TokenServiceURL" value="XYZ" />
    <appSettings>
    
  3. Legen Sie den Wert des Schlüssels RequireSSL auf False fest und ändern Sie den Wert von TokenServiceURL von https in http. Speichern Sie dann die Datei. Es sollte kein Neustart des IIS erforderlich sein, da jede Änderung an der Datei web.config einen Neustart der Anwendung Token-Service bewirken sollte.
  4. Wiederholen Sie die oben beschriebenen Schritte für die web.config-Dateien in den Verzeichnissen <Webserverstammverzeichnis>\ArcGIS\rest und <Webserverstammverzeichnis>\ArcGIS\Services.

Denken Sie, die SSL-Anforderung bei Bedarf wiederherzustellen. Um die SSL-Anforderung im Token-Service erneut zu aktivieren, legen Sie RequireSSL wieder auf True fest, legen Sie den Wert von TokenServiceURL so fest, dass https verwendet wird, und dann speichern Sie die Datei. Führen Sie diese Schritte für die web.config-Dateien in den Ordnern Token, rest und Services durch.

Verfügbarmachen des Token-Services für Internetzugriffe

Wie oben erläutert, müssen ArcGIS Desktop-, ArcGIS Explorer- und Web ADF-Clients auf den Token-Service zugreifen können, um einen Token für sichere Services anzufordern. Wenn Sie eine ArcGIS Server-Instanz für den Internetzugriff verfügbar machen, müssen Sie die URLs für den Zugriff auf den Token-Service ändern, damit er im Internet gefunden werden kann.

Während der Installation von ArcGIS Server wird der Computername in der URL für den Zugriff auf den Token-Service gespeichert. In einer Intranetumgebung, in der dieser Computername aufgelöst werden kann, funktioniert dies einwandfrei. Wenn Sie jedoch den Internetzugriff auf diesen Computer ermöglichen möchten, kann der Computername von den Clients nicht aufgelöst zu werden.

Um dieses Problem zu beheben, müssen Sie drei web.config-Dateien in den Ordnern rest, Services und Tokens der ArcGIS Server-Instanz (<Webstamm>\<ArcGIS Server-Instanzname>) ändern. Öffnen Sie jede dieser web.config-Dateien in einem Text-Editor und führen Sie folgende Schritte aus:

  1. Suchen Sie innerhalb des appSettings-Elements das Element mit dem Schlüssel: TokenServiceURL.
  2. Ändern des Werts für diesen Schlüssel von https://<Computername >/ArcGIS/tokens in https://<öffentlicher Domänenname>/ArcGIS/tokens.

7/10/2012