Unieważnienie zasady OAuth V2

Wyświetlasz dokumentację Apigee Edge.
Przejdź do dokumentacji Apigee X.
info

ikona zasad,

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 name może zawierać litery, cyfry, spacje, łączniki, podkreślenia i kropki. Ta wartość nie może przekraczać 255 znaków.

Opcjonalnie możesz użyć elementu <DisplayName>, aby oznaczyć zasadę w edytorze proxy w interfejsie zarządzania inną nazwą w języku naturalnym.

Nie dotyczy Wymagane
continueOnError

Ustaw wartość false, aby zwracać błąd, gdy zasada nie działa. Jest to oczekiwane zachowanie w przypadku większości zasad.

Ustaw wartość true, aby wykonanie przepływu było kontynuowane nawet po niepowodzeniu zasady.

fałsz Opcjonalny
enabled

Ustaw wartość true, aby egzekwować zasadę.

Ustaw wartość false, aby wyłączyć zasadę. Zasada nie będzie egzekwowana, nawet jeśli pozostanie dołączona do przepływu.

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 name zasady.

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

request.formparam.app_id (x-www-form-urlencoded i określony w treści żądania)

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

request.formparam.enduser_id (x-www-form-urlencoded i określony w treści żądania )

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>

Powiązane artykuły