Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
Opis
Unieważnia tokeny dostępu OAuth2 powiązane z identyfikatorem aplikacji dewelopera lub identyfikatorem użytkownika aplikacji albo z obydwiema tymi identyfikatorami.
Użyj zasad OAuthv2 do wygenerowania tokena 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 powiązany z tokenem identyfikator aplikacji dewelopera.
Domyślnie Apigee nie zawiera w tokenie identyfikatora użytkownika. Możesz skonfigurować Apigee tak, aby uwzględniał identyfikator użytkownika końcowego, 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 zasad 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 aplikacji dewelopera powiązanej z tokenem. Możesz potem unieważnić tokeny na podstawie tego identyfikatora aplikacji.
Skorzystaj z interfejsu Developer Apps API, aby uzyskać listę identyfikatorów aplikacji określonego dewelopera.
Możesz też użyć interfejsu developer Apps API, aby uzyskać szczegółowe informacje o aplikacji.
Unieważnij według identyfikatora użytkownika aplikacji
Unieważnij tokeny dostępu OAuth2 powiązane z identyfikatorem określonego użytkownika aplikacji. Jest to token powiązany z identyfikatorem użytkownika, któremu zostały wydane tokeny.
Domyślnie w tokenie dostępu OAuth nie ma pola na identyfikator użytkownika. Aby umożliwić unieważnianie tokenów dostępu OAuth 2.0 za pomocą identyfikatora użytkownika, musisz skonfigurować zasady OAuthv2 tak, aby zawierały identyfikator użytkownika w tokenie, jak pokazano powyżej.
Aby uzyskać identyfikator użytkownika aplikacji, skorzystaj z interfejsu Developer Apps API.
Sample
W poniższych przykładach używana jest zasada Unieważniania 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 w swojej zasadzie elementu <AppId>
.
W tym przykładzie oczekujemy znalezienia identyfikatora aplikacji dewelopera z 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 zasady unieważniają 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 swojej zasadzie elementu <RevokeBeforeTimestamp>
. <RevokeBeforeTimestamp>
określa czas UTC w milisekundach. Wszystkie tokeny wydane przed tym terminem zostaną unieważnione.
Ten przykład anuluje tokeny dostępu dla aplikacji dewelopera utworzonej 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ą określającą liczbę milisekund, które upłynęły od północy, 1 stycznia 1970 roku czasu UTC.
Odniesienie do elementu
Dokumentacja elementów opisuje elementy i atrybuty zasady BillingOAuthV2.
<?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>
Atrybuty <Cofnij OAuthV2>
<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">
Tabela poniżej zawiera opis atrybutów wspólnych dla wszystkich elementów nadrzędnych zasad:
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
name |
Wewnętrzna nazwa zasady. Wartość atrybutu Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
continueOnError |
Ustaw wartość Ustaw jako |
false | Opcjonalnie |
enabled |
Ustaw jako Ustaw wartość |
prawda | Opcjonalnie |
async |
Ten atrybut został wycofany. |
false | Wycofano |
Element <DisplayName>
Użyj oprócz atrybutu name
, aby oznaczyć zasadę w edytorze serwera proxy interfejsu zarządzania inną nazwą w języku naturalnym.
<DisplayName>Policy Display Name</DisplayName>
Domyślne |
Nie dotyczy Jeśli pominiesz ten element, zostanie użyta wartość atrybutu |
---|---|
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
Element <AppId>
Określa identyfikator aplikacji dewelopera do unieważnienia tokenów. Przekaż zmienną zawierającą identyfikator aplikacji lub literał identyfikator aplikacji.
<AppId>appIdString</AppId> or: <AppId ref="request.queryparam.app_id"></AppId>
Domyślne |
|
---|---|
Obecność |
Opcjonalnie |
Typ | Ciąg znaków |
Prawidłowe wartości |
Zmienna przepływu zawierająca ciąg identyfikatora aplikacji albo ciąg literału. |
Element <Cascade>
Jeśli true
i masz tradycyjny nieprzejrzysty token dostępu, token odświeżania i token dostępu zostaną unieważnione w przypadku zgodności <AppId>
lub <EndUserId>
.
Jeśli jest ustawiona wartość false
, tylko token dostępu zostanie unieważniony, a token odświeżania pozostanie niezmieniony. To samo działa tylko w przypadku nieprzezroczystych tokenów dostępu.
<Cascade>false<Cascade>
Domyślne |
false |
---|---|
Obecność |
Opcjonalnie |
Typ | Wartość logiczna |
Prawidłowe wartości | true lub false |
Element <EndUserId>
Określa identyfikator użytkownika aplikacji unieważnienia tokena. Przekaż zmienną zawierającą identyfikator użytkownika lub literałowy ciąg tokena.
<EndUserId>userIdString</EndUserId> or: <EndUserId ref="request.queryparam.access_token"></EndUserId>
Domyślne |
|
---|---|
Obecność |
Opcjonalnie |
Typ | Ciąg znaków |
Prawidłowe wartości |
Zmienna przepływu zawierająca ciąg identyfikatora użytkownika albo ciąg literału. |
Element <SubscriptionBeforeTimestamp>
Unieważnij tokeny wydane przed sygnaturą czasową. Ten element działa z elementami <AppId>
i <EndUserId>
, umożliwiając unieważnianie tokenów przed określonym czasem.
Wartością domyślną jest czas uruchomienia zasady.
<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp> or: <RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
Domyślne |
Sygnatura czasowa wykonania zasady. |
---|---|
Obecność |
Opcjonalnie |
Typ | 64-bitowa (długa) liczba całkowita określająca liczbę milisekund cofniętych od północy, 1 stycznia 1970 r. czasu UTC. |
Prawidłowe wartości |
Zmienna przepływu zawierająca sygnaturę czasową lub sygnatura czasowa literału. Sygnatura czasowa nie może przypadać w przyszłości i nie może przypadać przed 1 stycznia 2014 r. |
Zmienne przepływu
Zasada UnsubscribeOAuthV2 nie ustawia zmiennych przepływu.
Informacje o błędach
W tej sekcji opisujemy kody błędów i komunikaty o błędach, które są zwracane, oraz zmienne błędów ustawiane przez Edge, gdy ta zasada wywołuje błąd. Te informacje są ważne, jeśli opracowujesz reguły dotyczące błędów do obsługi takich błędów. Więcej informacji znajdziesz w sekcjach Co musisz wiedzieć o błędach zasad i Postępowanie w przypadku błędów.
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
, gdy wystąpi błąd. Więcej informacji znajdziesz w sekcji Zmienne błędów poniżej.
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 pola AppdId , jak i EndUserId nie mogą być puste. |
Błędy wdrażania
Informacje o błędach wdrażania znajdziesz w komunikacie zgłoszonym w interfejsie.
Zmienne błędów
Te zmienne są ustawiane, gdy 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 środowiska wykonawczego powyżej. Nazwa błędu to ostatnia część kodu. | 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>