Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Co
Dekoduje token JWT bez weryfikacji podpisu. Jest to najbardziej przydatne, gdy używasz zgodności z zasadąVerifyJWT, gdy wartość żądania z tokena JWT musi być znana przed zweryfikowaniem podpisu tokena JWT.
Zasada dekodowania JWT działa niezależnie od algorytmu użytego do podpisania tokena JWT. Szczegółowe informacje znajdziesz w omówieniu zasad JWS i JWT.
Wideo
Obejrzyj krótki film, aby dowiedzieć się, jak zdekodować token JWT.
Przykład: dekodowanie tokena JWT
Poniższa zasada dekoduje token JWT znajdujący się w zmiennej przepływu var.jwt. Ten musi być obecna i zawierać realny token JWT (który można dedykować). Zasada może pobierać token JWT z dowolną zmienną przepływu.
<DecodeJWT name="JWT-Decode-HS256"> <DisplayName>JWT Verify HS256</DisplayName> <Source>var.jwt</Source> </DecodeJWT>
Zasada zapisuje dane wyjściowe w zmiennych kontekstowych, aby kolejne zasady lub warunki za pośrednictwem serwera proxy interfejsu API może badać te wartości. W sekcji Zmienne przepływu znajdziesz listę zmiennych ustawionych przez tę zasadę.
Dokumentacja elementu na potrzeby dekodowania tokena JWT
Dokumentacja zasady zawiera opis jej elementów i atrybutów.
Atrybuty, które zastosuj do elementu najwyższego poziomu
<DecodeJWT name="JWT" continueOnError="false" enabled="true" async="false">
Poniższe atrybuty są wspólne dla wszystkich elementów nadrzędnych zasad.
Atrybut | Opis | Domyślnie | Obecność |
---|---|---|---|
nazwa |
Wewnętrzna nazwa zasady. W nazwie można używać tylko następujących znaków:
A-Z0-9._\-$ % Interfejs zarządzania brzegowego wymusza jednak dodatkowe
takich jak automatyczne usuwanie znaków innych niż alfanumeryczne.
Opcjonalnie możesz użyć elementu |
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 |
fałsz | Opcjonalnie |
włączone |
Aby egzekwować zasadę, ustaw wartość true .
Ustaw „Wyłącz” na: |
prawda | Opcjonalnie |
asynchroniczny | Ten atrybut został wycofany. | fałsz | Wycofano |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
Użyj oprócz atrybutu name [nazwa], aby oznaczyć zasadę etykietą w edytorze serwera proxy w interfejsie zarządzania z inną nazwą w języku naturalnym.
Domyślnie | Jeśli pominiesz ten element, zostanie użyta wartość atrybutu nazwa zasady. |
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
<Source>
<Source>jwt-variable</Source>
Jeśli ten parametr jest używany, określa zmienną przepływu, w której zasada spodziewa się znaleźć token JWT do ich dekodowania.
Domyślnie | request.header.authorization (Ważne informacje znajdziesz w uwagę powyżej
o domyślnej wartości). |
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
Prawidłowe wartości | Nazwa zmiennej przepływu brzegowego |
Zmienne przepływu
Gdy operacja się uda, zostaną ustawione zasady Zweryfikuj token JWT i dekoduj JWT zmiennych kontekstowych zgodnie z tym wzorcem:
jwt.{policy_name}.{variable_name}
Jeśli na przykład nazwa zasady to jwt-parse-token
, to zasada będzie przechowywać
podmiot określony w tokenie JWT w zmiennej kontekstowej o nazwie jwt.jwt-parse-token.decoded.claim.sub
.
Aby zapewnić zgodność wsteczną, będzie ona też dostępna w wersji jwt.jwt-parse-token.claim.subject
.
Nazwa zmiennej | Opis |
---|---|
claim.audience |
Deklaracja odbiorców JWT. Ta wartość może być ciągiem znaków lub tablicą ciągów znaków. |
claim.expiry |
Data/godzina ważności wyrażona w milisekundach od początku epoki. |
claim.issuedat |
Data wydania tokena wyrażona w milisekundach od początku epoki. |
claim.issuer |
Deklaracja wydawcy JWT. |
claim.notbefore |
Jeśli token JWT zawiera deklarację nbf, ta zmienna będzie zawierać wartość, wyrażony w milisekundach od początku epoki. |
claim.subject |
Deklaracja podmiotu JWT. |
claim.name |
Wartość nazwanego oświadczenia (standardowe lub dodatkowe) w ładunku. Jedno z nich zostanie ustawione na każdego żądania w ładunku. |
decoded.claim.name |
Możliwe do analizowania w formacie JSON wartość nazwanego żądania (standardowe lub dodatkowe) w ładunku. Jedna zmienna jest ustawiona dla
każdego żądania w ładunku. Możesz na przykład użyć polecenia decoded.claim.iat , aby
pobiera token JWT wydany w momencie wydania, wyrażony w sekundach od początku epoki. Gdy
można też użyć zmiennych przepływu claim.name . Jest to parametr
zalecaną zmienną do użycia w celu uzyskania dostępu do roszczenia. |
decoded.header.name |
Możliwe do analizy wartość JSON nagłówka w ładunku. Jedna zmienna jest ustawiona dla
każdego nagłówka w ładunku. Możesz także używać zmiennych przepływu header.name ,
to zalecana zmienna pozwalająca uzyskać dostęp do nagłówka. |
expiry_formatted |
Data i godzina ważności w formacie zrozumiałym dla człowieka. Przykład: 2017-09-28T21:30:45.000+0000 |
header.algorithm |
Algorytm podpisywania używany w tokenie JWT. Na przykład RS256, HS384 i tak dalej. Więcej informacji znajdziesz w sekcji Parametr nagłówka(algorytm). |
header.kid |
Identyfikator klucza, jeśli został dodany podczas generowania tokena JWT. Zobacz też „Using a JSON Web Key Set” (Używanie zestawu kluczy internetowych JSON) (JWKS)” w JWT omówienie zasad, aby zweryfikować token JWT. Więcej informacji znajdziesz w sekcji Parametr nagłówka(identyfikator klucza). |
header.type |
Zostanie ustawiona wartość: JWT . |
header.name |
Wartość nazwanego nagłówka (standardowy lub dodatkowy). Jedno z nich zostanie ustawione na każdego dodatkowego nagłówka w części nagłówka tokena JWT. |
header-json |
Nagłówek w formacie JSON. |
is_expired |
prawda lub fałsz |
payload-claim-names |
Tablica deklaracji obsługiwanych przez token JWT. |
payload-json |
Ładunek w formacie JSON.
|
seconds_remaining |
Liczba sekund do wygaśnięcia tokena. Jeśli token wygaśnie, jest ujemna. |
time_remaining_formatted |
Czas do wygaśnięcia tokena w formacie zrozumiałym dla człowieka. Przykład: 00:59:59.926 |
valid |
W przypadku VerifyJWT ta zmienna ma wartość Prawda po zweryfikowaniu podpisu, a
bieżący czas jest przed wygaśnięciem tokena i po wartości notBefore, jeśli
są obecne. W przeciwnym razie ma wartość fałsz.
W przypadku DecodeJWT zmienna nie jest ustawiona. |
Informacje o błędzie
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.
Kod błędu | Stan HTTP | Przyczyna | Napraw |
---|---|---|---|
steps.jwt.FailedToDecode |
401 | Występuje, gdy zasada nie może zdekodować tokena JWT. Token JWT może być zniekształcony, nieprawidłowy lub z innego powodu nie można go usunąć. | build |
steps.jwt.FailedToResolveVariable |
401 | Występuje, gdy zmienna przepływu określona w elemencie <Source> zasady nie istnieje. |
|
steps.jwt.InvalidToken |
401 | Występuje, gdy zmienna przepływu określona w elemencie <Source> zasady jest poza zakresem lub nie można jej rozwiązać. |
build |
Błędy wdrażania
Te błędy mogą wystąpić podczas wdrażania serwera proxy zawierającego te zasady.
Nazwa błędu | Przyczyna | Napraw |
---|---|---|
InvalidEmptyElement |
Dzieje się tak, gdy zmienna przepływu zawierająca token JWT do zdekodowania nie jest określona w elemencie <Source> zasady.
|
build |
Zmienne błędów
Te zmienne są ustawiane po wystąpieniu błędu działania. Więcej informacji znajdziesz w artykule Podstawowe informacje o błędach związanych z naruszeniem zasad.
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 "TokenExpired" |
JWT.failed |
Wszystkie zasady JWT ustawiają tę samą zmienną w przypadku niepowodzenia. | JWT.failed = true |
Przykładowa odpowiedź na błąd
W przypadku obsługi błędów sprawdzoną metodą jest przechwycenie części błędu errorcode
.
. Nie polegaj na tekście zawartym w pliku faultstring
, ponieważ może się on zmienić.
Przykładowa reguła błędu
<FaultRules> <FaultRule name="JWT Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "TokenExpired")</Condition> </Step> <Condition>JWT.failed=true</Condition> </FaultRule> </FaultRules>