OAuth 2.0-Zugriffstokens nach Endnutzer-ID, Anwendungs-ID oder nach beidem widerrufen

Sie können OAuth 2.0-Zugriffstokens mithilfe der Richtlinie RevokeOAuthV2 nach Endnutzer-ID, Anwendungs-IDs oder nach beidem widerrufen. "Endnutzer" bezeichnet den Nutzer der Anwendung, die die API aufruft.

Wann Sie die Nutzer-ID in einem Zugriffstoken speichern müssen

Nutzer-IDs sind standardmäßig nicht in Zugriffstokens enthalten. Manchmal ist es aber hilfreich, die Nutzer-ID in einem Zugriffstoken zu speichern. Beispiel:

  • Ein Feature für Ihre Website oder App, damit Nutzer sehen können, welche Drittanbieter-Apps sie autorisiert haben und den Zugriff auf diese Apps bei Bedarf widerrufen können.
  • Ein Feature, mit dem ein autorisierter Nutzer alle Zugriffstokens widerrufen kann, die mit einer bestimmten Entwickleranwendung verknüpft sind.

Informationen zu OAuth-Zugriffstokens

Ein von Apigee generiertes OAuth 2.0-Zugriffstoken hat standardmäßig das folgende Format:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "developer.email" : "tesla@weathersample.com",
 "organization_id" : "0",
 "token_type" : "BearerToken",
 "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
 "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
 "organization_name" : "myorg",
 "refresh_token_expires_in" : "0", //--in seconds
 "refresh_count" : "0"
}

Wichtige Hinweise:

  • Das Feld application_name enthält die UUID der Anwendung, die mit dem Token verknüpft ist. Wenn Sie den Widerruf von OAuth 2.0-Zugriffstokens nach Anwendungs-ID aktivieren, gilt dies für die von Ihnen verwendete Anwendungs-ID.
  • Das Feld access_token enthält den Wert des OAuth 2.0-Zugriffstokens.
  • Im Standard-OAuth-Zugriffstoken gibt es kein Feld für die Endnutzer-ID.

Um OAuth 2.0-Zugriffstoken nach Endnutzer-ID zu widerrufen, müssen Sie in der OAuth 2.0-Richtlinie die Nutzer-ID in das Token aufnehmen. Wenn Sie die Richtlinie so konfiguriert haben, dass die Endnutzer-ID im Token enthalten ist, wird sie wie unten dargestellt als Feld app_enduser angezeigt:

{
 "issued_at" : "1421847736581",
 "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
 "scope" : "READ",
 "app_enduser" : "6ZG094fgnjNf02EK",
 "status" : "approved",
 "api_product_list" : "[PremiumWeatherAPI]",
 "expires_in" : "3599", //--in seconds
 "developer.email" : "tesla@weathersample.com",
 "organization_id" : "0",
 "token_type" : "BearerToken",
 "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
 "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
 "organization_name" : "myorg",
 "refresh_token_expires_in" : "0", //--in seconds
 "refresh_count" : "0"
}

Richtlinien konfigurieren

Um Tokens nach Nutzer-ID zu widerrufen, müssen Sie zuerst die OAuth 2.0-Richtlinie konfigurieren, um dem Zugriffstoken die Nutzer-ID hinzuzufügen. Nach der Aufnahme von Endnutzer-IDs in Zugriffstokens können Sie Tokens nach Endnutzer-ID widerrufen.

Um die Richtlinie für das Einfügen der Endnutzer-ID in ein Zugriffstoken zu konfigurieren, müssen Sie die Eingabevariable angeben, die die Endnutzer-ID enthält. Zur Festlegung der Variable verwenden Sie das Tag <AppEndUser>:

<OAuthV2 async="false" continueOnError="false" enabled="true" name="GenerateAccessTokenClient">
  <DisplayName>OAuth 2.0.0 1</DisplayName>
  <ExternalAuthorization>false</ExternalAuthorization>
  <Operation>GenerateAccessToken</Operation>
  <SupportedGrantTypes>
    <GrantType>client_credentials</GrantType>
  </SupportedGrantTypes>
  <GenerateResponse enabled="true"/>
  <GrantType>request.queryparam.grant_type</GrantType>
  <AppEndUser>request.header.appuserID</AppEndUser>
  <ExpiresIn>960000</ExpiresIn>
</OAuthV2>

Im Folgenden ist eine RevokeOAuthV2-Beispielrichtlinie aufgeführt, die für den Widerruf durch EndUserId konfiguriert ist:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RevokeOAuthV2 continueOnError="false" enabled="true" name="GetOAuthV2Info-1">
    <DisplayName>Get OAuth v2.0 Info 1</DisplayName>
    <EndUserId ref="request.header.appuserID"></EndUserId>
    <Cascade>false</Cascade>
</RevokeOAuthV2>

Weitere Informationen finden Sie unter OAuth V2-Richtlinie widerrufen.

Mit dem folgenden Beispielbefehl wird ein Token generiert und die Nutzer-ID im Header appuserID übergeben:

curl -H "appuserID:6ZG094fgnjNf02EK" \
-H "Content-Type: application/x-www-form-urlencoded" \
  -H "Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ" \
  -X POST "https://apitest.acme.com/oauth/token" \
  -d "grant_type=client_credentials"

Sie können die Informationen als Teil einer Anfrage auch auf andere Weise übergeben. Alternativ haben Sie folgende Möglichkeiten:

  • Eine Formularparametervariable verwenden: request.formparam.appuserID
  • Eine Ablaufvariable mit der Endnutzer-ID verwenden