Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Przegląd
Unieważnia tokeny dostępu OAuth2 powiązane z identyfikatorem aplikacji dewelopera lub identyfikatorem użytkownika aplikacji, albo z oboma tymi identyfikatorami.
Użyj zasady OAuthv2, aby wygenerować token dostępu OAuth 2.0. Token wygenerowany przez Apigee ma ten 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 uwzględnia identyfikatora użytkownika w tokenie. Możesz skonfigurować Apigee tak, aby uwzględniało
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 uwzględniany 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żnianie 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 wtedy unieważnić tokeny na podstawie tego identyfikatora aplikacji.
Aby uzyskać listę identyfikatorów aplikacji konkretnego dewelopera, użyj interfejsu Developer apps API.
Możesz też użyć interfejsu Developer apps API , aby uzyskać szczegółowe informacje o aplikacji.
Unieważnianie według identyfikatora użytkownika aplikacji
Unieważnij tokeny dostępu OAuth2 powiązane z identyfikatorem konkretnego użytkownika aplikacji. Jest to token powiązany z identyfikatorem użytkownika, któremu wydano 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 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 interfejsu Developer apps API.
Przykłady
Poniższe przykłady używają zasady Revoke 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
zasadzie.
Poniższy przykład oczekuje, że identyfikator aplikacji dewelopera tokena dostępu znajdzie się 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>
Zasada unieważnia token dostępu na podstawie identyfikatora aplikacji dewelopera.
Unieważnianie 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 zasadzie elementu <RevokeBeforeTimestamp>. <RevokeBeforeTimestamp>
określa czas epoki UTC w milisekundach. Wszystkie tokeny wydane przed tym czasem zostaną unieważnione.
Poniższy przykład unieważnia tokeny dostępu aplikacji dewelopera utworzonej przed 1 lipca 2019 r.:
<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ą
liczbę milisekund, które upłynęły od północy 1 stycznia 1970 r. czasu UTC.
Odniesienie do elementu
Odniesienie do elementu opisuje elementy i atrybuty zasady 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>
Atrybuty elementu <RevokeOAuthV2>
<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">
W tabeli poniżej opisano atrybuty wspólne dla wszystkich elementów nadrzędnych zasady:
| Atrybut | Opis | Domyślny | Obecność |
|---|---|---|---|
name |
Wewnętrzna nazwa zasady. Wartość atrybutu Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
continueOnError |
Ustaw wartość Ustaw wartość |
fałsz | Opcjonalny |
enabled |
Ustaw wartość Ustaw wartość |
prawda | Opcjonalny |
async |
Ten atrybut został wycofany. |
fałsz | Wycofano |
Element <DisplayName>
Użyj go oprócz atrybutu name, aby oznaczyć zasadę w edytorze proxy w interfejsie zarządzania
inną nazwą w języku naturalnym.
<DisplayName>Policy Display Name</DisplayName>
| Domyślny |
Nie dotyczy Jeśli pominiesz ten element, zostanie użyta wartość atrybutu |
|---|---|
| Obecność | Opcjonalny |
| Typ | Ciąg znaków |
Element <AppId>
Określa identyfikator aplikacji dewelopera tokenów do unieważnienia. Przekaż zmienną zawierającą identyfikator aplikacji lub literał identyfikatora aplikacji.
<AppId>appIdString</AppId> or: <AppId ref="request.queryparam.app_id"></AppId>
| Domyślny |
|
|---|---|
| Obecność |
Opcjonalny |
| Typ | Ciąg znaków |
| Prawidłowe wartości |
Zmienna przepływu zawierająca ciąg znaków identyfikatora aplikacji lub literał. |
Element <Cascade>
Jeśli true i masz tradycyjny nieprzezroczysty token dostępu, to w przypadku dopasowania elementu <AppId> lub <EndUserId> unieważniony zostanie zarówno token odświeżania, jak i token dostępu.
Jeśli false,
unieważniony zostanie tylko token dostępu, a token odświeżania pozostanie bez zmian. To samo zachowanie dotyczy tylko nieprzezroczystych tokenów dostępu.
<Cascade>false<Cascade>
| Domyślny |
fałsz |
|---|---|
| Obecność |
Opcjonalny |
| Typ | Wartość logiczna |
| Prawidłowe wartości | true lub false |
Element <EndUserId>
Określa identyfikator użytkownika aplikacji tokena do unieważnienia. Przekaż zmienną zawierającą identyfikator użytkownika lub literał tokena.
<EndUserId>userIdString</EndUserId> or: <EndUserId ref="request.queryparam.access_token"></EndUserId>
| Domyślny |
|
|---|---|
| Obecność |
Opcjonalny |
| Typ | Ciąg znaków |
| Prawidłowe wartości |
Zmienna przepływu zawierająca ciąg znaków identyfikatora użytkownika lub literał. |
Element <RevokeBeforeTimestamp>
Unieważnij tokeny wydane przed sygnaturą czasową. Ten element współpracuje z elementami <AppId>
i <EndUserId>, aby umożliwić unieważnianie tokenów przed określonym czasem.
Wartością domyślną jest czas wykonania zasady.
<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp> or: <RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
| Domyślny |
Sygnatura czasowa wykonania zasady. |
|---|---|
| Obecność |
Opcjonalny |
| Typ | 64-bitowa (długa) liczba całkowita reprezentująca liczbę milisekund, które upłynęły od północy, 1 stycznia 1970 r. czasu UTC. |
| Prawidłowe wartości |
Zmienna przepływu zawierająca sygnaturę czasową lub literał sygnatury czasowej. Sygnatura czasowa nie może być w przyszłości ani przed 1 stycznia 2014 r. |
Zmienne przepływu
Zasada RevokeOAuthV2 nie ustawia zmiennych przepływu.
Odniesienie do błędu
W tej sekcji opisujemy kody błędów i komunikaty o błędach zwracane przez Edge oraz zmienne błędów ustawiane przez Edge, gdy ta zasada powoduje błąd. Te informacje są ważne, jeśli tworzysz reguły błędów do obsługi błędów. Więcej informacji znajdziesz w artykułach Co trzeba wiedzieć o błędach zasad i Obsługa błędów.
Błędy w czasie wykonywania
Te błędy mogą wystąpić podczas wykonywania zasady. Nazwy błędów podane poniżej to ciągi znaków
przypisywane 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 być 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 | Pola AppdId i EndUserId nie mogą być puste. |
Błędy wdrożenia
Informacje o błędach wdrożenia znajdziesz w komunikacie wyświetlanym w interfejsie.
Zmienne błędów
Te zmienne są ustawiane, gdy ta zasada powoduje błąd w czasie wykonywania.
| Zmienne | Gdzie | Przykład |
|---|---|---|
fault.name="fault_name" |
fault_name to nazwa błędu wymieniona w tabeli Błędy w czasie wykonywania powyżej. Nazwa błędu to ostatnia część kodu błędu. | fault.name Matches "IPDeniedAccess" |
oauthV2.policy_name.failed |
policy_name to nazwa zasady określona przez użytkownika, która spowodowała błąd. | oauthV2.GetTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name to nazwa zasady określona przez użytkownika, która spowodowała błąd. | oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id |
oauthV2.policy_name.fault.cause |
policy_name to nazwa zasady określona przez użytkownika, 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>