Unieważnienie zasady OAuth V2

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

ikona zasad

Omówienie

unieważnia tokeny dostępu OAuth2 powiązane z identyfikatorem aplikacji dewelopera lub identyfikatorem użytkownika aplikacji (lub z obydwoma).

Aby wygenerować token dostępu OAuth 2.0, użyj zasad OAuth 2. Token wygenerowany przez Apigee ma następujący 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 w tokenie identyfikatora użytkownika. Możesz skonfigurować Apigee tak, aby uwzględniał identyfikator użytkownika, dodając element <AppEndUser> do zasad OAuthv2:

<OAuthV2 name="GenerateAccessTokenClient">
    <Operation>GenerateAccessTokenV/Operation>
    ...
    <AppEndUser>request.queryparam.app_enduser</AppEndUser>
</OAuthV2>

W tym przykładzie podaj identyfikator użytkownika w ramach zasad OAuthv2 w parametrze zapytania o nazwie app_enduser. Identyfikator użytkownika końcowego jest następnie dołączany do elementu app_enduser w tokenie:

{
 "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 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. Następnie możesz unieważnić tokeny na podstawie tego identyfikatora aplikacji.

Unieważnianie uprawnień według identyfikatora użytkownika końcowego aplikacji

Unieważnianie tokenów dostępu OAuth2 powiązanych z identyfikatorem konkretnego użytkownika końcowego aplikacji. To token powiązany z identyfikatorem użytkownika, któremu zostały wystawione tokeny.

Domyślnie w tokenie dostępu OAuth nie ma pola identyfikatora użytkownika. Aby umożliwić odwoływanie tokenów dostępu OAuth 2.0 według identyfikatora użytkownika, musisz skonfigurować zasady OAuth 2 tak, aby zawierały identyfikator użytkownika w tokenie, jak pokazano powyżej.

Aby uzyskać identyfikator użytkownika aplikacji, użyj interfejsu API aplikacji dla deweloperów.

Przykłady

W tych przykładach do unieważniania tokenów dostępu OAuth 2 używana jest zasada unieważniania OAuth 2 v2.

Identyfikator aplikacji dewelopera

Aby unieważnić tokeny dostępu według identyfikatora aplikacji dewelopera, użyj elementu <AppId> w swoich zasadach.

W tym przykładzie identyfikator aplikacji dewelopera dla tokena dostępu ma być znaleziony 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 tokena dostępu.

Cofnij przed sygnaturą czasową

Aby cofnąć tokeny dostępu według identyfikatora aplikacji dewelopera wygenerowane przed określoną datą i godziną, użyj elementu <RevokeBeforeTimestamp> w swoich zasadach. <RevokeBeforeTimestamp>określa czas UTC w milisekundach. Wszystkie tokeny wydane przed tym terminem zostaną cofnięte.

W tym przykładzie odwołujemy 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ą, która reprezentuje liczbę milisekund, które upłynęły od północy 1 stycznia 1970 r. czasu UTC.


Element referencyjny

Ten element zawiera opis elementów i atrybutów 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 <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 zasad:

Atrybut Opis Domyślny Obecność
name

Wewnętrzna nazwa zasady. Wartość atrybutu name może zawierać litery, cyfry, spacje, łączniki, znaki 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 zastępczego interfejsu zarządzania inną nazwą w języku naturalnym.

Nie dotyczy Wymagane
continueOnError

Ustaw na false, aby zwracać błąd, gdy wystąpi błąd zasad. Jest to prawidłowe działanie w przypadku większości zasad.

Ustaw na true, aby wykonanie przepływu było kontynuowane nawet po niepowodzeniu się zasady.

fałsz Opcjonalny
enabled

Ustaw na true, aby egzekwować zasadę.

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

prawda Opcjonalny
async

Ten atrybut został wycofany.

fałsz Wycofano

Element <DisplayName>

Oprócz atrybutu name możesz użyć innej nazwy w języku naturalnym, aby oznaczyć zasadę w edytorze zastępczym interfejsu zarządzania.

<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, którego dotyczą tokeny do anulowania. Przekaż zmienną zawierającą identyfikator aplikacji lub dosłowny identyfikator aplikacji.

<AppId>appIdString</AppId>

or:

<AppId ref="request.queryparam.app_id"></AppId>
Domyślny

request.formparam.app_id (wartość zakodowana w formacie x-www-form-urlencoded i wyspecyfikowana 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 ciąg znaków dosłownych.

Element <Cascade>

Jeśli true i masz tradycyjny nieprzezroczysty token dostępu, oba tokeny (token odświeżania i token dostępu) zostaną cofnięte, jeśli <AppId> lub <EndUserId> będą pasować. Jeśli false, anulowany jest tylko token dostępu, a token odświeżania pozostaje bez zmian. Takie samo zachowanie występuje tylko w przypadku zaciemnionych 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, którego token ma zostać cofnięty. Przekaż zmienną zawierającą identyfikator użytkownika lub ciąg znaków tokenu.

<EndUserId>userIdString</EndUserId>

or:

<EndUserId ref="request.queryparam.access_token"></EndUserId>
Domyślny

request.formparam.enduser_id (kodowany w formacie x-www-form-urlencoded i określany 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 ciąg znaków literackich.

Element <RevokeBeforeTimestamp>

Unieważnij tokeny wydane przed tym sygnałem czasowym. Ten element współpracuje z elementami <AppId><EndUserId>, aby umożliwić Ci odwoływanie tokenów przed określonym czasem. Wartością domyślną jest czas wykonywania zasad.

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

<RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
Domyślny

Sygnatura czasowa wykonania zasad.

Obecność

Opcjonalny

Typ 64-bitowa (długa) liczba całkowita reprezentująca liczbę milisekund od północy 1 stycznia 1970 r. czasu UTC.
Prawidłowe wartości

Zmienne przepływu zawierające sygnaturę czasową lub sygnaturę czasową w postaci ciągu znaków. Sygnatura czasowa nie może wskazywać na przyszłość ani na dzień wcześniejszy niż 1 stycznia 2014 r.

Zmienne przepływu

Zasada RevokeOAuthV2 nie ustawia zmiennych przepływu.

Odwołania do błędów

W tej sekcji opisaliśmy kody błędów i komunikaty o błędach, które są zwracane, oraz zmienne błędów, które są ustawiane przez Edge, gdy ta zasada powoduje błąd. Te informacje są ważne, jeśli opracowujesz reguły dotyczące błędów, aby radzić sobie z błędami. Więcej informacji znajdziesz w artykułach Więcej informacji o błędach związanych z naruszeniem zasadRozwiązywanie problemów.

Błędy w czasie wykonywania

Te błędy mogą wystąpić podczas wykonywania zasad. Nazwy błędów podane poniżej to ciągi znaków przypisane do zmiennej fault.name, gdy wystąpi błąd. Więcej informacji znajdziesz w sekcji dotyczących zmiennych Fault.

Kod błędu Stan HTTP Przyczyna
steps.oauth.v2.InvalidFutureTimestamp 500 Sygnatura czasowa nie może wskazywać na przyszłość.
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 Wartości AppdId i EndUserId nie mogą być puste.

Błędy wdrażania

Informacje o błędach wdrożenia znajdziesz w komunikacie wyświetlonym 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, jak podano w tabeli Błędy środowiska wykonawczego powyżej. Nazwa błędu to ostatni element 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