Tokens

Wenn ein Benutzer erfolgreich authentifiziert wurde, empfängt die Anwendung Token von App ID. Der Dienst verwendet drei Haupttypen von Token, um den Authentifizierungsprozess abzuschließen: Zugangs-, Identitäts- und Aktualisierungs-Tokens.

Zugriffstoken

Zugriffstoken stellen die Berechtigung dar und ermöglichen die Kommunikation mit Back-End-Ressourcen , die durch Berechtigungsfilter geschützt werden, die von App ID festgelegt werden. Das Token entspricht den JOSE-Spezifikationen (JOSE = JavaScript Object Signing and Encryption). Das Token ist so formatiert, dass JSON-Web-Token mit einem JSON-Webschlüssel signiert wird, der den RS256-Algorithmus verwendet.

Beispieltoken:

Header:
{
   "alg": "RS256",
   "typ": "JWT",
   "kid": "appId-39a37f57-a227-4bfe-a044-93b6e6050a61-2018-08-02T11:57:43.401",
   "ver": 4
}
Payload:
{
   "iss": "https://us-south.appid.cloud.ibm.com/oauth/v4/39a37f57-a227-4bfe-a044-93b6e6050a61",
   "exp": 1551903163,
   "aud": [
   "968c2306-9aef-4109-bc06-4f5ed6axi24a"
   ],
   "sub": "2b96cc04-eca5-4122-a8de-6e07d14c13a5",
   "email_verified": true,
   "amr": [
   "cloud_directory"
   ],
   "iat": 1551899553,
   "tenant": "39a37f57-a227-4bfe-a044-93b6e6050a61",
   "scope": "openid appid_default appid_readprofile appid_readuserattr appid_writeuserattr appid_authenticated"
}

Identitätstoken

Identitätstoken stellen die Authentifizierung dar und enthalten Informationen zum Benutzer. Sie können Informationen zum Benutzer wie Name, E-Mail-Adresse, Geschlecht und Ort enthalten. Ein Token kann auch eine URL zu einem Bild des Benutzers zurückgeben. Das Token ist so formatiert, dass JSON-Web-Token mit einem JSON-Webschlüssel signiert wird, der den RS256-Algorithmus verwendet.

Beispieltoken:

Header:
{
   "alg": "RS256",
   "typ": "JWT",
   "kid": "appId-39a37f57-a227-4bfe-a044-93b6e6050a61-2018-08-02T11:57:43.401",
   "ver": 4
}
Payload:
{
   "iss": "https://us-south.appid.cloud.ibm.com/oauth/v4/39a37f57-a227-4bfe-a044-93b6e6050a61",
   "aud": [
   "968c2306-9aef-4109-bc06-4f5ed6axi24a"
   ],
   "exp": 1551903163,
   "tenant": "39a37f57-a227-4bfe-a044-93b6e6050a61",
   "iat": 1551899553,
   "email": "appid155@mailinator.com",
   "name": "appid155@mailinator.com",
   "sub": "2b96cc04-eca5-4122-a8de-6e07d14c13a5",
   "email_verified": true,
   "identities": [
   {
      "provider": "cloud_directory",
      "id": "118c0278-3526-4954-876b-cf70eb88efa2"
   }
   ],
   "amr": [
   "cloud_directory"
   ]
}

Identitätstoken enthalten nur einen Teil der Benutzerinformationen. Um alle vom Identitätsprovider bereitgestellten Informationen anzuzeigen, können Sie die /userinfo-Endpunkt verwenden.

Aktualisierungstoken

App ID unterstützt die Fähigkeit, neue Zugangs- und Identitäts-Tokens ohne erneute Authentifizierung zu erwerben, wie im OIDC definiert. Ein Aktualisierungstoken kann verwendet werden, um das Zugriffstoken zu erneuern, sodass ein Benutzer keine Maßnahmen zur Anmeldung ergreifen muss (z. B. Angabe von Anmeldeinformationen). Ähnlich wie Zugriffstoken enthalten Aktualisierungstoken Daten, mit denen App ID ermitteln kann, ob Sie berechtigt sind. Diese Token haben jedoch den Typ 'Opaque'.

Aktualisierungstoken sind so konfiguriert, dass sie eine längere Lebensdauer haben als ein normales Zugriffstoken. Wenn ein Zugriffstoken abläuft, ist das Aktualisierungstoken weiterhin gültig und kann zum Erneuern des Zugriffstokens verwendet werden. Die Aktualisierungstoken von App ID können für eine Dauer von 1 bis 90 Tagen konfiguriert sein. Um die Vorteile von Aktualisierungstoken vollständig zu nutzen, behalten Sie die Token für ihre gesamte Lebensdauer bei oder bis sie erneuert werden. Ein Benutzer kann mit einem Aktualisierungstoken alleine nicht direkt auf Ressourcen zugreifen, d. h. eine längere Verwendung ist sicherer als dies bei Zugriffstoken der Fall wäre. Es empfiehlt sich, Aktualisierungstoken sicher von dem Client speichern zu lassen, von dem sie empfangen wurden, und sie nur an den Autorisierungsserver zu senden, der sie ausgegeben hat.

Um zusätzlichen Komfort zu bieten, erneuert App ID auch sein Aktualisierungstoken- und sein Ablaufdatum, wenn das Zugriffstoken erneuert wird, sodass der Benutzer angemeldet bleiben kann, während er aktiv ist, bevor das aktuelle Aktualisierungstoken abläuft. Wenn Sie Aktualisierungstokens verwenden möchten, aber den Benutzer zwingen möchten, sich regelmäßig anzumelden, verwendet Ihre App möglicherweise nur die Aktualisierungstokens, die zurückgegeben werden, wenn sich der Benutzer durch Eingabe seiner Berechtigungsnachweise anmeldet. Wir empfehlen jedoch, immer das letzte von App ID erhaltene Aktualisierungs-Token zu verwenden, wie in den OAuth 2.0 Spezifikationen beschrieben.

Obwohl diese Tokens den Anmeldeprozess optimieren können, darf Ihre App nicht von ihnen abhängig sein. Sie können jederzeit widerrufen werden, z. B. wenn Sie glauben, dass Ihre Aktualisierungstoken beeinträchtigt wurden. Sie können bei Bedarf zwei Methoden zum Widerrufen eines Aktualisierungstokens verwenden. Wenn Sie das Aktualisierungs-Token haben, können Sie es widerrufen, indem Sie RFC7009. Wenn Sie die Benutzer-ID haben, können Sie das Aktualisierungs-Token auch über die Verwaltungs-API widerrufen. Weitere Informationen zum Zugriff auf die Verwaltungs-API finden Sie unter Verwalten des Dienstzugriffs.

Beispiele für das Arbeiten mit Aktualisierungstoken und ihre Verwendung zur Implementierung einer Remember-me-Funktionalität finden Sie unter Lernprogramm zur Einführung.

Woher stammen die Token?

Die Token werden über den App ID OAuth Server ausgegeben und sind als JSON-Web-Token(JWT ) formatiert. Die Token wurden mit einem JSON Web Key(JWK) mit dem Algorithmus RS256 signiert.

Was geschieht mit den Informationen, die das Token enthält?

Das Zugriffstoken enthält eine Reihe von JWT-Standard-Claims und eine Reihe von App ID-spezifischen Claims (z. B. eine Tenant-ID). Das Identitätstoken enthält benutzerspezifische Informationen. Die Informationen in den Token werden als Claims als Teil eines Benutzerprofils gespeichert.

Wie werden Token empfangen?

Die Token werden von Ihrer App nach einer erfolgreichen Authentifizierung empfangen. Ihre App kann die Token verwenden, um Informationen zur Benutzerberechtigung und Authentifizierung abzurufen. Das Zugriffstoken kann verwendet werden, um Zugriff auf geschützte Ressourcen zu erhalten, indem eine Anforderung an die Ressource gesendet wird. Um die Token zu extrahieren, muss Ihre App den Header syntaktisch analysieren.

Beispielanforderung:

GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer  mF_9.B5f-4.1JqM mF_9.B5f-4.1JqM

Wie werden Token konfiguriert?

Sie können Token mithilfe einer angepassten Claim-Zuordnung anpassen. Weitere Informationen finden Sie unter Token anpassen.