Unieważnienie zasady OAuth V2

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

ikona zasad

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.

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

Nie dotyczy Wymagane
continueOnError

Ustaw jako false, aby w przypadku niepowodzenia zasady zwracany był błąd. To normalne w przypadku większości zasad.

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

fałsz Opcjonalnie
enabled

Aby egzekwować zasadę, ustaw wartość true.

Aby wyłączyć zasadę, ustaw wartość false. Te zasady nie będą jest wymuszane nawet wtedy, gdy jest ono połączone z przepływem.

prawda Opcjonalnie
async

Ten atrybut został wycofany.

fałsz Wycofano

&lt;DisplayName&gt; 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 name zasady otrzyma wartość .

Obecność Opcjonalnie
Typ Ciąg znaków

&lt;AppId&gt; 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

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

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

&lt;EndUserId&gt; 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

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

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.

&lt;RevokeBeforeTimestamp&gt; 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>

Powiązane artykuły