Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Omówienie
Unieważnia tokeny dostępu OAuth2 powiązane z identyfikatorem aplikacji dewelopera, identyfikatorem użytkownika aplikacji lub z oboma tymi elementami.
Użyj zasad OAuthv2, aby wygenerować token dostępu OAuth 2.0. Token wygenerowany przez Apigee ma taki 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" }
Element application_name
zawiera identyfikator aplikacji dewelopera powiązany z tokenem.
Domyślnie Apigee nie umieszcza w tokenie identyfikatora użytkownika. Możesz skonfigurować Apigee tak, aby uwzględniała
identyfikator użytkownika, dodając element <AppEndUser>
do zasady OAuthv2:
<OAuthV2 name="GenerateAccessTokenClient"> <Operation>GenerateAccessTokenV/Operation> ... <AppEndUser>request.queryparam.app_enduser</AppEndUser> </OAuthV2>
W tym przykładzie przekaż identyfikator użytkownika do zasady OAuthv2 w parametrze zapytania o nazwie app_enduser
.
Identyfikator użytkownika jest następnie zawarty w tokenie w elemencie app_enduser
:
{ "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" }
Unieważnij według identyfikatora aplikacji dewelopera
Unieważnij tokeny dostępu OAuth2 powiązane z identyfikatorem aplikacji dewelopera. Wszystkie tokeny dostępu OAuth2 wygenerowane przez Apigee zawierają identyfikator powiązanej aplikacji dewelopera używając tokena. Możesz wtedy unieważnić tokeny na podstawie identyfikatora aplikacji.
Użyj interfejsu Developer Apps API, aby uzyskać listę identyfikatorów aplikacji dla określonego dewelopera.
Możesz też skorzystać z interfejsu Developers Apps API. .
Unieważnij według identyfikatora użytkownika aplikacji
Unieważnij tokeny dostępu OAuth2 powiązane z identyfikatorem użytkownika określonej aplikacji. To jest token powiązany z identyfikatorem użytkownika, któremu przyznano tokeny.
Domyślnie token dostępu OAuth nie zawiera pola na identyfikator użytkownika. Aby umożliwić unieważnienie Tokeny dostępu OAuth 2.0 według identyfikatora użytkownika, musisz skonfigurować zasadę OAuthv2, tak aby uwzględniała identyfikator użytkownika. w tokenie, jak pokazano powyżej.
Aby uzyskać identyfikator użytkownika aplikacji, użyj parametru Interfejs API aplikacji dla deweloperów.
Przykłady
W przykładach poniżej użyto zasady Unieważnienie protokołu OAuth V2 do unieważniania tokenów dostępu OAuth2.
Identyfikator aplikacji dewelopera
Aby unieważnić tokeny dostępu według identyfikatora aplikacji dewelopera, użyj elementu <AppId>
w
zasady.
W tym przykładzie należy znaleźć identyfikator aplikacji dewelopera, który jest tokenem dostępu w parametrze zapytania o nazwie
app_id
:
<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy"> <DisplayName>Revoke OAuth v2.0-1</DisplayName> <AppId ref="request.queryparam.app_id"></AppId> </RevokeOAuthV2>
Na podstawie identyfikatora aplikacji dewelopera zasada unieważnia token dostępu.
Unieważnij przed sygnaturą czasową
Aby unieważnić tokeny dostępu według identyfikatora aplikacji dewelopera, które zostały wygenerowane przed określoną datą i godziną,
użyj w zasadach elementu <RevokeBeforeTimestamp>
. <RevokeBeforeTimestamp>
określa czas UTC w milisekundach. Wszystkie tokeny wydane przed tym terminem zostaną unieważnione.
Ten przykład unieważnia tokeny dostępu dla aplikacji dewelopera utworzonych przed 1 lipca 2019 roku:
<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>
Element <RevokeBeforeTimestamp>
przyjmuje 64-bitową (długą) liczbę całkowitą reprezentującą
liczba milisekund, które upłynęły od północy, 1 stycznia 1970 roku czasu UTC.
Odniesienie do elementu
Dokumentacja elementu opisuje elementy i atrybuty zasady ExpirationOAuthV2.
<?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>
<UnsubscribeOAuthV2> atrybuty
<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">
W tej tabeli opisano atrybuty wspólne dla wszystkich elementów nadrzędnych zasad:
Atrybut | Opis | Domyślny | Obecność |
---|---|---|---|
name |
Wewnętrzna nazwa zasady. Wartość atrybutu Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
continueOnError |
Ustaw jako Ustaw jako |
fałsz | Opcjonalnie |
enabled |
Aby egzekwować zasadę, ustaw wartość Aby wyłączyć zasadę, ustaw wartość |
prawda | Opcjonalnie |
async |
Ten atrybut został wycofany. |
fałsz | Wycofano |
<DisplayName> element
Używaj oprócz atrybutu name
do oznaczania zasady w
edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.
<DisplayName>Policy Display Name</DisplayName>
Domyślny |
Nie dotyczy Jeśli pominiesz ten element, atrybut |
---|---|
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
<AppId> element
Określa identyfikator aplikacji dewelopera dla tokenów do unieważnienia. Przekaż zmienną, która zawiera lub dosłowny identyfikator aplikacji.
<AppId>appIdString</AppId> or: <AppId ref="request.queryparam.app_id"></AppId>
Domyślny |
|
---|---|
Obecność |
Opcjonalnie |
Typ | Ciąg znaków |
Prawidłowe wartości |
Zmienna przepływu zawierająca ciąg identyfikatora aplikacji lub ciąg literału. |
<Kaskada> element
Jeśli true
i masz tradycyjny nieprzejrzysty token dostępu, zarówno
token odświeżania i token dostępu zostaną unieważnione, jeśli <AppId>
lub
Dopasowanie: <EndUserId>
.
Jeśli false
,
unieważniony zostanie tylko token dostępu, a token odświeżania pozostanie niezmieniony. To samo działa
tylko dla nieprzejrzystych tokenów dostępu.
<Cascade>false<Cascade>
Domyślny |
fałsz |
---|---|
Obecność |
Opcjonalnie |
Typ | Wartość logiczna |
Prawidłowe wartości | true lub false |
<EndUserId> element
Określa identyfikator użytkownika aplikacji dla tokena do unieważnienia. Przekaż zmienną, która zawiera identyfikatora użytkownika lub ciągu tokena literału.
<EndUserId>userIdString</EndUserId> or: <EndUserId ref="request.queryparam.access_token"></EndUserId>
Domyślny |
|
---|---|
Obecność |
Opcjonalnie |
Typ | Ciąg znaków |
Prawidłowe wartości |
Zmienna przepływu zawierająca ciąg identyfikatora użytkownika lub ciąg literału. |
<RevokeBeforeTimestamp> element
Unieważnij tokeny, które zostały wydane przed sygnaturą czasową. Ten element działa z: <AppId>
i <EndUserId>
, aby umożliwić unieważnienie tokenów przed określonym terminem.
Wartość domyślna to czas wykonywania zasady.
<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp> or: <RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
Domyślny |
Sygnatura czasowa wykonania zasady. |
---|---|
Obecność |
Opcjonalnie |
Typ | 64-bitowa (długa) liczba całkowita określająca liczbę milisekund widocznych od północy, 1 stycznia 1970 roku UTC. |
Prawidłowe wartości |
Zmienna procesu zawierająca sygnaturę czasową lub dosłowną sygnaturę czasową. Sygnatura czasowa nie może wskazywać na przyszłość i nie może przypadać przed 1 stycznia 2014 roku. |
Zmienne przepływu
Zasada PrivacyOAuthV2 nie ustawia zmiennych przepływu.
Informacje o błędzie
W tej sekcji opisano kody błędów i komunikaty o błędach, które są zwracane, oraz zmienne błędów ustawiane przez Edge, gdy ta zasada wyzwala błąd. Warto o tym wiedzieć, jeśli rozwijasz reguły błędów, aby obsługi błędów. Więcej informacji znajdziesz w artykule Co musisz wiedzieć o błędach związanych z zasadami i postępowaniu z błędami
Błędy w czasie wykonywania
Te błędy mogą wystąpić podczas wykonywania zasady. Nazwy błędów widoczne poniżej to ciągi tekstowe
przypisane do zmiennej fault.name
w przypadku wystąpienia błędu. Zobacz błąd
zmiennych.
Kod błędu | Stan HTTP | Przyczyna |
---|---|---|
steps.oauth.v2.InvalidFutureTimestamp |
500 | Sygnatura czasowa nie może przypadać w przyszłości. |
steps.oauth.v2.InvalidEarlyTimestamp |
500 | Sygnatura czasowa nie może być wcześniejsza niż 1 stycznia 2014 r. |
steps.oauth.v2.InvalidTimestamp |
500 | Sygnatura czasowa jest nieprawidłowa. |
steps.oauth.v2.EmptyAppAndEndUserId |
500 | Zarówno pole AppdId , jak i EndUserId nie może być puste. |
Błędy wdrażania
Więcej informacji o błędach wdrażania znajdziesz w komunikacie zgłoszonym w interfejsie.
Zmienne błędów
Te zmienne są ustawiane, gdy ta zasada wywołuje błąd w czasie działania.
Zmienne | Gdzie | Przykład |
---|---|---|
fault.name="fault_name" |
fault_name to nazwa błędu podana w tabeli Błędy czasu działania powyżej. Nazwa błędu to ostatnia część kodu błędu. | fault.name Matches "IPDeniedAccess" |
oauthV2.policy_name.failed |
policy_name to określona przez użytkownika nazwa zasady, która spowodowała błąd. | oauthV2.GetTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name to określona przez użytkownika nazwa zasady, która spowodowała błąd. | oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id |
oauthV2.policy_name.fault.cause |
policy_name to określona przez użytkownika nazwa zasady, która spowodowała błąd. | oauthV2.GetTokenInfo.cause = ClientID is Invalid |
Przykładowa odpowiedź na błąd
{ "fault":{ "faultstring":"Timestamp is in the future.", "detail":{ "errorcode":"steps.oauth.v2.InvalidFutureTimestamp" } } }
Przykładowa reguła błędu
<FaultRule name="RevokeOAuthV2 Faults"> <Step> <Name>AM-InvalidTimestamp</Name> </Step> <Condition>(fault.name = "InvalidFutureTimestamp")</Condition> </FaultRule>