Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Co
Pobiera atrybuty tokenów dostępu, tokeny odświeżania, kody autoryzacji i aplikację klienta i wypełnia zmienne wartościami tych atrybutów.
Ta zasada jest przydatna, gdy trzeba skonfigurować dynamiczne, warunkowe zachowanie na podstawie wartości w tokenie lub kodzie autoryzacji. Przy każdym sprawdzeniu poprawności tokena zmienne są uzupełniane automatycznie. wartościami atrybutów tokena. Jeżeli jednak token nie został sprawdzony, może używać tej funkcji, aby jawnie wypełniać zmienne wartościami atrybutów tokena. Zobacz też Dostosowywanie tokenów Authorization Codes (Kody autoryzacji).
Token dostępu, który przekazujesz do tej zasady, musi być prawidłowy. W przeciwnym razie zasada wygeneruje
invalid_access_token
błąd.
Przykłady
W poniższych przykładach użyto zasady Get OAuth V2 Info do pobierania informacji o różnych w obrębie przepływu pracy OAuth2, a następnie uzyskując dostęp do tych informacji w kodzie.
Token dostępu
Aby uzyskać odniesienie do tokena dostępu, użyj elementu <AccessToken>
w
zasady.
W tym przykładzie należy znaleźć token dostępu w parametrze zapytania o nazwie "access_token" (szczegóły implementacji zależą od reklamodawcy):
<GetOAuthV2Info name="MyTokenAttrsPolicy"> <AccessToken ref="request.queryparam.access_token"></AccessToken> </GetOAuthV2Info>
Biorąc pod uwagę token dostępu, zasada wyszukuje profil tokena i wypełnia zestaw z danymi profilowymi.
Możesz wtedy uzyskać dostęp do zmiennych, używając JavaScriptu lub w inny sposób. Przykład poniżej pobiera zakresy powiązane z tokenem dostępu za pomocą JavaScriptu:
var scope = context.getVariable('oauthv2accesstoken.MyTokenAttrsPolicy.scope');
Aby uzyskać dostęp do tych zmiennych w kodzie, musisz dodać do nich prefiks „oauthv2accesstoken”. Pełną listę zmiennych dostępnych przez token dostępu znajdziesz tutaj Zmienne tokena dostępu.
Kod autoryzacji
Aby uzyskać atrybuty kodu autoryzacji, użyj atrybutu <AuthorizationCode>
tych zasad.
Ten przykład wymaga znalezienia tokena dostępu w formularzu parametr o nazwie „code” (szczegóły implementacji zależą od reklamodawcy):
<GetOAuthV2Info name="MyAuthCodeAttrsPolicy"> <AuthorizationCode ref="request.formparam.code"></AuthorizationCode> </GetOAuthV2Info>
Biorąc pod uwagę kod autoryzacji, zasada wyszukuje informacje o kodzie i wypełnia zestaw z danymi kodu autoryzacji.
Możesz wtedy uzyskać dostęp do zmiennych, używając JavaScriptu lub w inny sposób. Przykład poniżej pobiera atrybut niestandardowy powiązany z kodem autoryzacji za pomocą języka JavaScript:
var attr = context.getVariable(‘oauthv2authcode.MyAuthCodeAttrsPolicy.custom_attribute_name’);
Aby uzyskać dostęp do tych zmiennych w kodzie, musisz dodać do nich prefiks „oauthv2authcode”. Pełną listę zmiennych dostępnych w kodzie autoryzacji znajdziesz tutaj: Zmienne kodu autoryzacji.
Token odświeżania
Aby uzyskać atrybuty tokena odświeżania, użyj elementu <RefreshToken>
w swoim pliku
.
W tym przykładzie należy znaleźć token dostępu w parametrze zapytania o nazwie "refresh_token" (szczegóły implementacji zależą od reklamodawcy):
<GetOAuthV2Info name="MyRefreshTokenAttrsPolicy"> <RefreshToken ref="request.queryparam.refresh_token"/> </GetOAuthV2Info>
Biorąc pod uwagę token odświeżania, zasada wyszukuje informacje o tokenie odświeżania i wypełnia dane zestawu zmiennych z danymi tokenów odświeżania.
Możesz później uzyskać do nich dostęp za pomocą JavaScriptu lub w inny sposób. Poniżej Ten przykład pobiera za pomocą JavaScriptu atrybut niestandardowy powiązany z tokenem odświeżania:
var attr = context.getVariable(‘oauthv2refreshtoken.MyRefreshTokenAttrsPolicy.accesstoken.custom_attribute_name’);
Pamiętaj, że aby uzyskać dostęp do zmiennych w kodzie, musisz poprzedzić je prefiksem „oauthv2refreshtoken”. Pełną listę zmiennych dostępnych poprzez token odświeżania znajdziesz w artykule Odśwież zmienne tokenów.
Statyczny
W rzadkich przypadkach może być konieczne uzyskanie profilu statycznie skonfigurowanego tokena (jeden niedostępnego za pośrednictwem zmiennej). Aby to zrobić, podaj wartość atrybutu token dostępu.
<GetOAuthV2Info name="GetTokenAttributes"> <AccessToken>shTUmeI1geSKin0TODcGLXBNe9vp</AccessToken> </GetOAuthV2Info>
Możesz to zrobić w przypadku wszystkich innych typów tokenów (identyfikator klienta, kod autoryzacji i odświeżenie tokeny).
Identyfikator klienta
Ten przykład pokazuje, jak pobrać informacje o aplikacji klienckiej przy użyciu identyfikatora klienta.
Po uruchomieniu zasada wypełnia zbiór zmiennych informacjami o kliencie. W tym
zasada oczekuje, że identyfikator klienta zostanie znaleziony w parametrze zapytania
pod tytułem client_id
. Mając identyfikator klienta, zasada wyszukuje
i wypełnia zestaw zmiennych danymi profilu. Zmienne
poprzedzony prefiksem oauthv2client.
<GetOAuthV2Info name="GetClientAttributes"> <ClientId ref="request.queryparam.client_id"></ClientId> </GetOAuthV2Info>
Możesz wtedy uzyskać dostęp do zmiennych, używając JavaScriptu lub w inny sposób. Aby na przykład uzyskać nazwa aplikacji dewelopera i adres e-mail dewelopera powiązany z aplikacją kliencką za pomocą Kod JavaScript:
context.getVariable("oauthv2client.GetClientAttributes.developer.email"); context.getVariable("oauthv2client.GetClientAttributes.developer.app.name");
Odniesienie do elementu
Dokumentacja elementu opisuje elementy i atrybuty zasady GetOAuthV2Info.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="GetOAuthV2Info-1" <DisplayName>Get OAuth v2.0 Info 1</DisplayName> <AccessToken ref="variable"></AccessToken> <AuthorizationCode ref="variable"></AuthorizationCode> <ClientId ref="variable"></ClientId> <RefreshToken ref="variable"></RefreshToken> </GetOAuthV2Info>
<GetOAuthV2Info> atrybuty
<GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="Get-OAuth-v20-Info-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 Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
continueOnError |
Ustaw jako Ustaw jako |
fałsz | Opcjonalnie |
enabled |
Aby egzekwować zasadę, ustaw wartość Aby wyłączyć zasadę, ustaw wartość |
prawda | Opcjonalnie |
async |
Ten atrybut został wycofany. |
fałsz | Wycofano |
<DisplayName> 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 |
---|---|
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
<AccessToken> element
Pobiera profil dla tokena dostępu. Przekazujesz zmienną, która zawiera ciąg tokena dostępu lub ciąg tokenu literału (rzadkie litery). W tym przykładzie token dostępu to pobranych z parametru zapytania przekazanego w żądaniu. Używaj parametru <ignoreAccessTokenStatus> jeśli chcesz zwrócić informacje o unieważnionym lub wygasłym tokenie.
<AccessToken ref="request.queryparam.access_token"></AccessToken>
Domyślne: |
request.formparam.access_token (zakodowany w formacie x-www-form-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 tokena dostępu lub ciąg literału. |
<AuthorizationCode> element
Pobiera profil kodu autoryzacji. Podaj zmienną, która zawiera ciąg kodu uwierzytelniania lub ciąg znaków tokena literału (rzadkie litery). W tym przykładzie kod autoryzacji to pobranych z parametru zapytania przekazanego w żądaniu. Aby uzyskać listę zmiennych wypełnianych przez ten argument Więcej dowiesz się z artykułu „Zmienne przepływu”.
<AuthorizationCode ref="request.queryparam.authorization_code"></AuthorizationCode>
Domyślne: |
request.formparam.access_token (zakodowany w formacie x-www-form-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 znaków uwierzytelniania lub ciąg literału. |
<ClientId> element
Pobiera informacje związane z identyfikatorem klienta. W tym przykładzie pobierany jest identyfikator klienta. z parametru zapytania przekazanego w żądaniu. Aby zobaczyć listę zmiennych wypełnianych przez tę operację, Więcej informacji: „Zmienne przepływu”.
<ClientId ref="request.queryparam.client_id"></ClientId>
Domyślne: |
request.formparam.access_token (zakodowany w formacie x-www-form-url i określony w żądaniu treść) |
Obecność: |
Opcjonalnie |
Typ: | Ciąg |
Prawidłowe wartości: | Zmienna przepływu zawierająca ciąg znaków uwierzytelniania lub ciąg literału. |
<IgnoreAccessTokenStatus> element
Zwraca informacje o tokenie, nawet jeśli token wygasł lub został unieważniony. Ten element może mieć tylko używane z tokenami dostępu. Informacje dotyczące innych jednostek, takich jak tokeny odświeżania i autoryzacja są domyślnie zwracane bez względu na ich stan.
<IgnoreAccessTokenStatus>true</IgnoreAccessTokenStatus>
Domyślne: |
fałsz |
Obecność: |
Opcjonalnie |
Typ: | Wartość logiczna |
Prawidłowe wartości: | prawda lub fałsz |
<RefreshToken> element
Pobiera profil dla tokena odświeżania. Przekazujesz zmienną, która zawiera odśwież ciąg tokena lub literału tokena (rzadkie litery). W tym przykładzie token odświeżania to pobranych z parametru zapytania przekazanego w żądaniu. Aby uzyskać listę zmiennych wypełnianych przez ten argument Więcej dowiesz się z artykułu „Zmienne przepływu”.
<RefreshToken ref="request.queryparam.refresh_token"></RefreshToken>
Domyślne: |
request.formparam.access_token (zakodowany w formacie x-www-form-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 tokena odświeżania lub ciąg literału. |
Zmienne przepływu
Te zmienne wypełnia zasada GetOAuthV2Info i jest zwykle używana w przypadkach, gdy nie potrzebują danych profilu, ale nie mają jeszcze zatwierdzenia ani weryfikacji. .
Zmienne identyfikatora klienta
Te zmienne są wypełniane po ustawieniu elementu ClientId:
oauthv2client.{policy_name}.client_id oauthv2client.{policy_name}.client_secret oauthv2client.{policy_name}.redirection_uris // Note the spelling -- 'redirection_uris' oauthv2client.{policy_name}.developer.email oauthv2client.{policy_name}.developer.app.name oauthv2client.{policy_name}.developer.id oauthv2client.{policy_name}.{developer_app_custom_attribute_name}
Zmienne tokena dostępu
Te zmienne są zapełniane po ustawieniu elementu AccessToken:
oauthv2accesstoken.{policy_name}.developer.id oauthv2accesstoken.{policy_name}.developer.app.name oauthv2accesstoken.{policy_name}.developer.app.id oauthv2accesstoken.{policy_name}.developer.email oauthv2accesstoken.{policy_name}.organization_name oauthv2accesstoken.{policy_name}.api_product_list oauthv2accesstoken.{policy_name}.access_token oauthv2accesstoken.{policy_name}.scope oauthv2accesstoken.{policy_name}.expires_in //in seconds oauthv2accesstoken.{policy_name}.status oauthv2accesstoken.{policy_name}.client_id oauthv2accesstoken.{policy_name}.accesstoken.{custom_attribute_name} oauthv2accesstoken.{policy_name}.refresh_token oauthv2accesstoken.{policy_name}.refresh_token_status oauthv2accesstoken.{policy_name}.refresh_token_expires_in //in seconds oauthv2accesstoken.{policy_name}.refresh_count oauthv2accesstoken.{policy_name}.refresh_token_issued_at oauthv2accesstoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED
Zmienne kodu autoryzacji
Te zmienne są zapełniane po ustawieniu elementu AuthorizationCode:
oauthv2authcode.{policy_name}.code oauthv2authcode.{policy_name}.scope oauthv2authcode.{policy_name}.redirect_uri oauthv2authcode.{policy_name}.client_id oauthv2authcode.{policy_name}.{auth_code_custom_attribute_name}
Odśwież zmienne tokena
Te zmienne są zapełniane po ustawieniu elementu RefreshToken:
oauthv2refreshtoken.{policy_name}.developer.id oauthv2refreshtoken.{policy_name}.developer.app.name oauthv2refreshtoken.{policy_name}.developer.app.id oauthv2refreshtoken.{policy_name}.developer.email oauthv2refreshtoken.{policy_name}.organization_name oauthv2refreshtoken.{policy_name}.api_product_list oauthv2refreshtoken.{policy_name}.access_token oauthv2refreshtoken.{policy_name}.scope oauthv2refreshtoken.{policy_name}.expires_in //in seconds oauthv2refreshtoken.{policy_name}.status oauthv2refreshtoken.{policy_name}.client_id oauthv2refreshtoken.{policy_name}.accesstoken.{custom_attribute_name} oauthv2refreshtoken.{policy_name}.refresh_token oauthv2refreshtoken.{policy_name}.refresh_token_status oauthv2refreshtoken.{policy_name}.refresh_token_expires_in //in seconds oauthv2refreshtoken.{policy_name}.refresh_count oauthv2refreshtoken.{policy_name}.refresh_token_issued_at oauthv2refreshtoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED
Schemat
Każdy typ zasad jest definiowany przez schemat XML (.xsd
). Schematy zasad
są dostępne na GitHubie.
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.access_token_expired |
500 | Token dostępu wysłany do zasady stracił ważność. |
steps.oauth.v2.authorization_code_expired |
500 | Kod autoryzacji wysłany do zasady stracił ważność. |
steps.oauth.v2.invalid_access_token |
500 | Token dostępu wysłany do zasady jest nieprawidłowy. |
steps.oauth.v2.invalid_client-invalid_client_id |
500 | Identyfikator klienta wysłany do zasady jest nieprawidłowy. |
steps.oauth.v2.invalid_refresh_token |
500 | Token odświeżania wysłany do zasady jest nieprawidłowy. |
steps.oauth.v2.invalid_request-authorization_code_invalid |
500 | Kod autoryzacji wysłany do zasady jest nieprawidłowy. |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 | Więcej informacji: ten post na karcie Społeczność Apigee z informacjami o rozwiązywaniu tego problemu. |
steps.oauth.v2.refresh_token_expired |
500 | Token odświeżania wysłany do zasady stracił ważność. |
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":"ClientId is Invalid", "detail":{ "errorcode":"keymanagement.service.invalid_client-invalid_client_id" } } }
Przykładowa reguła błędu
<FaultRule name="OAuthV2 Faults"> <Step> <Name>AM-InvalidClientIdResponse</Name> </Step> <Condition>(fault.name = "invalid_client-invalid_client_id")</Condition> </FaultRule>