OAuth V2-Richtlinie widerrufen

Diese Seite gilt für Apigee und Apigee Hybrid.

Apigee Edge-Dokumentation aufrufen

Richtliniensymbol

Übersicht

Widerruft OAuth2-Zugriffstokens, die einer Entwickler-App-ID oder einer Endnutzer-ID der App zugeordnet sind, oder beides.

Diese Richtlinie ist eine erweiterbare Richtlinie und die Verwendung dieser Richtlinie kann je nach Apigee-Lizenz Auswirkungen auf die Kosten oder die Nutzung haben. Informationen zu Richtlinientypen und Auswirkungen auf die Nutzung finden Sie unter Richtlinientypen.

Generieren Sie mit der OAuthv2-Richtlinie ein OAuth 2.0-Zugriffstoken. Ein von Apigee generiertes Token hat folgendes 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"
}

Das application_name-Element enthält die mit dem Token verknüpfte Entwickler-App-ID.

Standardmäßig enthält Apigee nicht die Endnutzer-ID in das Token. Sie können Apigee so konfigurieren, dass die Endnutzer-ID aufgenommen wird. Fügen Sie dazu in die OAuthv2-Richtlinie das Element <AppEndUser> ein:

<OAuthV2 name="GenerateAccessTokenClient">
    <Operation>GenerateAccessToken</Operation>
    ...
    <AppEndUser>request.queryparam.app_enduser</AppEndUser>
</OAuthV2>

Übergeben Sie in diesem Beispiel die Endnutzer-ID in einem Abfrageparameter mit dem Namen app_enduser an die OAuthv2-Richtlinie. Die Endnutzer-ID wird dann dem Token im Element app_enduser hinzugefügt:

{
 "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"
}

Von Entwickler-App-ID widerrufen

OAuth2-Zugriffstoken widerrufen, das einer Entwickler-App-ID zugeordnet ist. Alle von Apigee generierten OAuth2-Zugriffstoken enthalten die ID der mit dem Token verknüpften Entwickler-App. Sie können dann Tokens anhand der App-ID widerrufen.

Eine Liste der App-IDs für einen bestimmten Entwickler rufen Sie so ab:

Von Endnutzer-ID der App widerrufen

OAuth2-Zugriffstoken aufheben, das einer bestimmten Anwendungs-Endnutzer-ID zugeordnet ist. Das ist das Token, das mit der ID des Nutzers verknüpft ist, an den die Tokens ausgegeben wurden.

Standardmäßig enthält das OAuth-Zugriffstoken kein Feld für die Endnutzer-ID. Um den Widerruf von OAuth 2.0-Zugriffstokens nach Endnutzer-ID zu ermöglichen, müssen Sie die OAuthv2-Richtlinie so konfigurieren, dass die Nutzer-ID wie oben gezeigt im Token enthalten ist.

Mit der Methode Method: organizations.developers.get können Sie eine Endnutzer-ID für eine App abrufen.

Beispiele

In den folgenden Beispielen wird die Richtlinie "OAuth V2 widerrufen" aufgehoben, um OAuth2-Zugriffstokens zu widerrufen.

Entwickler-App-ID

Verwenden Sie in Ihrer Richtlinie das Element <AppId>, um Zugriffstokens nach Entwickler-ID zu widerrufen.

Im folgenden Beispiel wird die Entwickler-App-ID des Zugriffstokens in einem Abfrageparameter mit dem Namen app_id erwartet:

<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy">
  <DisplayName>Revoke OAuth v2.0-1</DisplayName>
  <AppId ref="request.queryparam.app_id"></AppId>
</RevokeOAuthV2>

Aufgrund der ID der Entwickler-App widerruft die Richtlinie das Zugriffstoken.

Vor Zeitstempel widerrufen

Verwenden Sie in Ihrer Richtlinie das Element <RevokeBeforeTimestamp>, um Zugriffstokens nach Entwickler-ID zu widerrufen, die vor einem bestimmten Datum und einer bestimmten Uhrzeit generiert wurden. <RevokeBeforeTimestamp> gibt eine UTC-Epochenzeit in Millisekunden an. Alle vor diesem Zeitpunkt ausgestellten Tokens werden widerrufen.

Im folgenden Beispiel werden die Zugriffstokens für eine Entwickler-App widerrufen, die vor dem 1. Juli 2019 erstellt wurde:

<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy">
  <DisplayName>Revoke OAuth v2.0-1</DisplayName>
  <AppId ref="request.queryparam.app_id"></AppId>
  <RevokeBeforeTimestamp>1561939200000</RevokeBeforeTimestamp>
</RevokeOAuthV2>

Das Element <RevokeBeforeTimestamp> verwendet eine (lange) ganze 64-Bit-Ganzzahl, die für die verstrichene Zeit seit Mitternacht den 1. Januar 1970 (UTC) steht.


Elementreferenz

Die Elementreferenz beschreibt die Elemente und Attribute der Richtlinie "RevokeOAuthV2".

<?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>
  <AppId ref="variable"></AppId>
  <EndUserId ref="variable"></EndUserId>
  <RevokeBeforeTimestamp ref="variable"></RevokeBeforeTimestamp>
  <Cascade>false</Cascade>
</RevokeOAuthV2>

<RevokeOAuthV2>-Attribute

<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">

In der folgenden Tabelle werden Attribute beschrieben, die für alle übergeordneten Richtlinienelemente gelten:

Attribut Beschreibung Standard Präsenz
name

Der interne Name der Richtlinie. Der Wert des Attributs name kann Buchstaben, Ziffern, Leerzeichen, Bindestriche, Unterstriche und Punkte enthalten. Dieser Wert darf 255 Zeichen nicht überschreiten.

Optional können Sie das Element <DisplayName> verwenden, um die Richtlinie im Proxy-Editor der Verwaltungs-UI mit einem anderen Namen in einer natürlichen Sprache zu versehen.

Erforderlich
continueOnError

Legen Sie false fest, um einen Fehler zurückzugeben, wenn eine Richtlinie fehlschlägt. Dies ist für die meisten Richtlinien das erwartete Verhalten.

Legen Sie true fest, damit die Ablaufausführung auch nach dem Fehlschlagen einer Richtlinie fortgesetzt wird.

false Optional
enabled

Setzen Sie den Wert auf true, um die Richtlinie zu erzwingen.

Legen Sie false fest, um die Richtlinie zu deaktivieren. Die Richtlinie wird nicht erzwungen, selbst wenn sie mit einem Ablauf verknüpft ist.

true Optional

<DisplayName>-Element

Wird zusätzlich zum Attribut name verwendet, um die Richtlinie im Proxy-Editor der Verwaltungs-UI mit einem anderen Namen in einer natürlichen Sprache zu versehen.

<DisplayName>Policy Display Name</DisplayName>
Standard

Wenn Sie dieses Element weglassen, wird der Wert des Namensattributs name der Richtlinie verwendet.

Präsenz Optional
Typ String

<AppId>-Element

Gibt die Entwickler-ID der Tokens an, die widerrufen werden sollen. Übergeben Sie entweder eine Variable, die die Anwendungs-ID oder eine Literal-App-ID enthält.

<AppId>appIdString</AppId>

or:

<AppId ref="request.queryparam.app_id"></AppId>
Standard

request.formparam.app_id (ein x-www-form-urlencoded und im Anfragetext angegeben)

Präsenz

Optional

Typ String
Zulässige Werte

Entweder eine Ablaufvariable mit einem App-ID-String oder einen Literalstring.

<Cascade>-Element

Wenn true und Sie ein herkömmliches intransparentes Zugriffstoken haben, werden sowohl das Aktualisierungstoken als auch das Zugriffstoken widerrufen, wenn entweder <AppId> oder <EndUserId> übereinstimmt. Wenn Sie ein JWT-Zugriffstoken haben, wird nur das mit dem Zugriffstoken ausgestellte Aktualisierungstoken widerrufen. JWT-Zugriffstokens können nicht widerrufen werden. Wenn false, wird nur das Zugriffstoken widerrufen und das Aktualisierungstoken unverändert. Das gleiche Verhalten gilt nur für intransparente Zugriffstokens. JWT-Zugriffstokens können nicht widerrufen werden.

<Cascade>false<Cascade>
Standard

false

Präsenz

Optional

Typ Boolean
Zulässige Werte true oder false

<EndUserId>-Element

Gibt die Endnutzer-ID des Tokens an, das widerrufen werden soll. Übergeben Sie entweder eine Variable, die die Nutzer-ID enthält, oder einen Literaltoken-String.

<EndUserId>userIdString</EndUserId>

or:

<EndUserId ref="request.queryparam.access_token"></EndUserId>
Standard

request.formparam.enduser_id (ein x-www-form-urlencoded und im Anfragetext angegeben)

Präsenz

Optional

Typ String
Zulässige Werte

Entweder eine Ablaufvariable mit einem User ID-String oder einen Literalstring.

<RevokeBeforeTimestamp>-Element

Widerrufen Sie Tokens, die vor dem Zeitstempel ausgegeben wurden. Dieses Element kann mit <AppId> und <EndUserId> verwendet werden, um Tokens vor einer bestimmten Zeit zu widerrufen. Der Standardwert ist der Zeitpunkt, zu dem die Richtlinie ausgeführt wird.

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

<RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
Standard

Der Zeitstempel, an dem die Richtlinie ausgeführt wird.

Präsenz

Optional

Typ 64-Bit-Ganzzahl, die die Anzahl der Millisekunden seit Mitternacht am 1. Januar 1970 (UTC) darstellt.
Zulässige Werte

Entweder eine Flussvariable mit Zeitstempel oder ein Literal-Zeitstempel. Der Zeitstempel darf nicht in der Zukunft liegen und darf nicht vor dem 1. Januar 2014 liegen.

Ablaufvariablen

Die Richtlinie "RevokeOAuthV2" kann keine Ablaufvariablen festlegen.

Fehlerreferenz

In diesem Abschnitt werden die zurückgegebenen Fehlercodes und Fehlermeldungen beschrieben, die von Apigee festgelegt werden, wenn die Richtlinie einen Fehler auslöst. Diese Informationen sind wichtig, wenn Sie Fehlerregeln zur Verarbeitung von Fehlern entwickeln. Weitere Informationen finden Sie unter Was Sie über Richtlinienfehler wissen müssen und Fehler beheben.

Laufzeitfehler

Diese Fehler können bei Ausführung der Richtlinie auftreten. Die unten aufgeführten Fehlernamen sind die Strings, die der Variable fault.name zugewiesen sind, wenn ein Fehler auftritt. Weitere Informationen finden Sie unten im Abschnitt "Fehlervariablen".

Fehlercode HTTP-Status Ursache
steps.oauth.v2.InvalidFutureTimestamp 500 Der Zeitstempel darf nicht in der Zukunft liegen.
steps.oauth.v2.InvalidEarlyTimestamp 500 Der Zeitstempel darf nicht vor dem 1. Januar 2014 liegen.
steps.oauth.v2.InvalidTimestamp 500 Zeitstempel ist ungültig.
steps.oauth.v2.EmptyAppAndEndUserId 500 AppdId und EndUserId dürfen nicht leer sein.

Bereitstellungsfehler

Informationen zu Bereitstellungsfehlern finden Sie in der Benutzeroberfläche, die in der Benutzeroberfläche angezeigt wird.

Fehlervariablen

Diese Variablen werden festgelegt, wenn diese Richtlinie zur Laufzeit einen Fehler auslöst.

Variablen Wo Beispiel
fault.name="fault_name" fault_name ist der Name des Fehlers, der in der obigen Tabelle Laufzeitfehler aufgeführt ist. Der Fehlername ist der letzte Teil des Fehlercodes. fault.name Matches "IPDeniedAccess"
oauthV2.policy_name.failed policy_name ist der benutzerdefinierte Name der Richtlinie, die den Fehler ausgelöst hat. oauthV2.GetTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name ist der benutzerdefinierte Name der Richtlinie, die den Fehler ausgelöst hat. oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id
oauthV2.policy_name.fault.cause policy_name ist der benutzerdefinierte Name der Richtlinie, die den Fehler ausgelöst hat. oauthV2.GetTokenInfo.cause = ClientID is Invalid

Beispiel für eine Fehlerantwort

{
   "fault":{
      "faultstring":"Timestamp is in the future.",
      "detail":{
         "errorcode":"steps.oauth.v2.InvalidFutureTimestamp"
      }
   }
}

Beispiel für eine Fehlerregel

<FaultRule name="RevokeOAuthV2 Faults">
    <Step>
        <Name>AM-InvalidTimestamp</Name>
    </Step>
    <Condition>(fault.name = "InvalidFutureTimestamp")</Condition>
</FaultRule>

Weitere Informationen