Diese Seite gilt für Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen
Ü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:
- Methode: organizations.developers.apps.list, um eine Liste der mit einem Entwickler verknüpften Apps abzurufen.
- Methode: organizations.developers.apps.get, um Details zur Anwendung, einschließlich der App-ID, abzurufen.
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 | Presence |
---|---|---|---|
name |
Der interne Name der Richtlinie. Der Wert des Attributs Optional können Sie das Element |
– | Erforderlich |
continueOnError |
Legen Sie Legen Sie |
false | Optional |
enabled |
Setzen Sie den Wert auf Legen Sie |
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 |
---|---|
Presence | 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 |
|
---|---|
Presence |
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 |
---|---|
Presence |
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 |
|
---|---|
Presence |
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. |
---|---|
Presence |
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>