Unieważnienie zasady OAuth V2

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

ikona zasad

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 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 serwera proxy interfejsu zarządzania inną nazwą w języku naturalnym.

Nie dotyczy Wymagane
continueOnError

Ustaw wartość false, aby zwracać błąd w przypadku niepowodzenia zasady. Jest to normalne działanie większości zasad.

Ustaw jako true, aby wykonywanie przepływu było kontynuowane nawet po awarii zasady.

false Opcjonalnie
enabled

Ustaw jako true, aby wymuszać zasadę.

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

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

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

request.formparam.app_id (adres URL zakodowany w formacie x-www i określony w treści żądania)

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

request.formparam.enduser_id (adres URL zakodowany w formacie x-www i określony w treści żądania)

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>

Powiązane artykuły