Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Co
Generuje podpisany token JWT z konfigurowalnym zestawem deklaracji. Token JWT można następnie zwrócić do przesyłanych do celów backendu lub w inny sposób. Szczegółowe informacje znajdziesz w omówieniu zasad JWS i JWT.
Wideo
Obejrzyj krótki film, aby dowiedzieć się, jak wygenerować podpisany token JWT.
Przykłady
Wygeneruj token JWT podpisany przy użyciu HS256 algorytm
Ta przykładowa zasada generuje nowy token JWT i podpisuje go za pomocą algorytmu HS256. Zasady HS256 na udostępnionym obiekcie tajnym zarówno do podpisywania, jak i weryfikacji podpisu.
Po aktywowaniu tego działania związanego z zasadami Edge koduje nagłówek i ładunek JWT, a następnie cyfrowo będzie podpisany token JWT. Pełny przykład wraz z instrukcjami zgłaszania żądania dotyczącego tych zasad znajdziesz w filmie powyżej.
Konfiguracja zasady utworzy token JWT z zestawem standardowych deklaracji zdefiniowanych przez specyfikację JWT, w tym datę wygaśnięcia wynoszącą 1 godzinę, a także dodatkowe roszczenie. Dostępne opcje Uwzględnić dowolną liczbę dodatkowych roszczeń. Szczegółowe informacje na temat elementu znajdziesz w dokumentacji elementu wymagań i opcji dla każdego elementu wymienionego w tych przykładowych zasadach.
<GenerateJWT name="JWT-Generate-HS256"> <DisplayName>JWT Generate HS256</DisplayName> <Algorithm>HS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <SecretKey> <Value ref="private.secretkey"/> <Id>1918290</Id> </SecretKey> <ExpiresIn>1h</ExpiresIn> <Subject>monty-pythons-flying-circus</Subject> <Issuer>urn://apigee-edge-JWT-policy-test</Issuer> <Audience>fans</Audience> <Id/> <AdditionalClaims> <Claim name="show">And now for something completely different.</Claim> </AdditionalClaims> <OutputVariable>jwt-variable</OutputVariable> </GenerateJWT>
Powstały token JWT będzie miał ten nagłówek...
{ "typ" : "JWT", "alg" : "HS256", "kid" : "1918290" }
...i będzie mieć ładunek z treścią podobną do tej:
{ "sub" : "monty-pythons-flying-circus", "iss" : "urn://apigee-edge-JWT-policy-test", "aud" : "show", "iat" : 1506553019, "exp" : 1506556619, "jti" : "BD1FF263-3D25-4593-A685-5EC1326E1F37", "show": "And now for something completely different." }
Wartość roszczeń iat, exp i jti. będą różne.
Generowanie tokena JWT podpisanego przy użyciu RS256 algorytm
Ta przykładowa zasada generuje nowy token JWT i podpisuje go za pomocą algorytmu RS256. Generowanie Podpis RS256 opiera się na kluczu prywatnym RSA, który należy podać w postaci zakodowanej w formacie PEM. Pełny przykład wraz z instrukcjami zgłaszania żądania dotyczącego tych zasad znajdziesz w filmie powyżej.
Po wywołaniu tego działania związanego z zasadami Edge koduje i podpisuje cyfrowo token JWT wraz z deklaracjami. Informacje o częściach tokena JWT oraz sposobie ich szyfrowania i podpisywania znajdziesz w dokumencie RFC7519.
<GenerateJWT name="JWT-Generate-RS256"> <Algorithm>RS256</Algorithm> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <PrivateKey> <Value ref="private.privatekey"/> <Password ref="private.privatekey-password"/> <Id ref="private.privatekey-id"/> </PrivateKey> <Subject>apigee-seattle-hatrack-montage</Subject> <Issuer>urn://apigee-edge-JWT-policy-test</Issuer> <Audience>urn://c60511c0-12a2-473c-80fd-42528eb65a6a</Audience> <ExpiresIn>60m</ExpiresIn> <Id/> <AdditionalClaims> <Claim name="show">And now for something completely different.</Claim> </AdditionalClaims> <OutputVariable>jwt-variable</OutputVariable> </GenerateJWT>
Wyznaczanie kluczowych elementów
Elementy używane do określania klucza używanego do generowania tokena JWT zależą od wybranego algorytmu: zgodnie z poniższą tabelą:
Algorytm | Kluczowe elementy | |
---|---|---|
HS{256/384/512}* | <SecretKey> <Value ref="private.secretkey"/> <Id>1918290</Id> </SecretKey> |
|
RS/PS/ES{256/384/512}* | <PrivateKey> <Value ref="private.privatekey"/> <Password ref="private.privatekey-password"/> <Id ref="private.privatekey-id"/> </PrivateKey> Elementy |
|
* Więcej informacji o najważniejszych wymaganiach znajdziesz w artykule Informacje o algorytmach szyfrowania podpisu |
Dokumentacja elementu na potrzeby generowania tokena JWT
Dokumentacja zasady zawiera opis elementów i atrybutów zasady Generate JWT.
Uwaga: konfiguracja może się nieco różnić w zależności od szyfrowania stosowanego algorytmu. Zapoznaj się z przykładami, aby zademonstrować do konkretnych zastosowań.
Atrybuty, które zastosuj do elementu najwyższego poziomu
<GenerateJWT 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 |
<Algorithm>
<Algorithm>algorithm-here</Algorithm>
Określa algorytm szyfrowania do podpisywania tokena.
Domyślnie | Nie dotyczy |
Obecność | Wymagane |
Typ | Ciąg znaków |
Prawidłowe wartości | HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512 |
<Audience>
<Audience>audience-here</Audience> or: <Audience ref='variable_containing_audience'/>
Zasada generuje token JWT zawierający deklarację aud ustawioną na określoną wartość . Ta deklaracja wskazuje odbiorców, dla których jest przeznaczony token JWT. To jest jeden z zarejestrowanych roszczeń wymienionych w dokumencie RFC7519.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Typ | Tablica (lista wartości rozdzielonych przecinkami) |
Prawidłowe wartości | Wszystko, co pozwala zidentyfikować odbiorców. |
<AdditionalClaims/Claim>
<AdditionalClaims> <Claim name='claim1'>explicit-value-of-claim-here</Claim> <Claim name='claim2' ref='variable-name-here'/> <Claim name='claim3' ref='variable-name-here' type='boolean'/> </AdditionalClaims> or: <AdditionalClaims ref='claim_payload'/>
Umożliwia podanie dodatkowych par nazwa/wartość deklaracji JWT w ładunku. Możesz określić jako ciąg, liczbę, wartość logiczną, mapę lub tablicę. Mapa to po prostu zestaw nazw/wartości pary.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Prawidłowe wartości | Każda wartość, która ma być używana w dodatkowym roszczeniu. Możesz określić jako ciąg, liczbę, wartość logiczną, mapę lub tablicę. |
Element <Claim>
ma te atrybuty:
- name – (wymagany) nazwa roszczenia.
- ref – (opcjonalny) nazwa zmiennej przepływu. Jeśli ten parametr jest obecny, zasada użyje wartości tego parametru jako twierdzenia. Jeśli podasz zarówno atrybut ref, jak i jednoznaczną wartość roszczenia, w parametrze wartość wyraźna jest wartością domyślną i jest używana, jeśli wskazana zmienna przepływu nie została rozwiązana.
- type – (opcjonalny) jeden z: ciąg (wartość domyślna), liczba, wartość logiczna lub mapa.
- array – (opcjonalny) ustaw wartość true, aby wskazać, czy wartość jest tablicą typów. Domyślne: false (fałsz).
Jeśli uwzględnisz element <Claim>
, nazwy roszczeń będą ustawiane statycznie, gdy
skonfiguruj zasadę. Możesz też przekazać obiekt JSON, aby określić nazwy twierdzeń.
Obiekt JSON jest przekazywany jako zmienna, więc nazwy deklaracji w wygenerowanym tokenie JWT są określane w czasie działania.
Na przykład:
<AdditionalClaims ref='json_claims'/>
Gdzie zmienna json_claims
zawiera obiekt JSON w formacie:
{ "sub" : "person@example.com", "iss" : "urn://secure-issuer@example.com", "non-registered-claim" : { "This-is-a-thing" : 817, "https://example.com/foobar" : { "p": 42, "q": false } } }
Wygenerowany token JWT zawiera wszystkie deklaracja w obiekcie JSON.
<AdditionalHeaders/Claim>
<AdditionalHeaders> <Claim name='claim1'>explicit-value-of-claim-here</Claim> <Claim name='claim2' ref='variable-name-here'/> <Claim name='claim3' ref='variable-name-here' type='boolean'/> <Claim name='claim4' ref='variable-name' type='string' array='true'/> </AdditionalHeaders>
Umieszcza dodatkową parę nazwy i wartości deklaracji w nagłówku tokena JWT.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Prawidłowe wartości | Każda wartość, która ma być używana w dodatkowym roszczeniu. Możesz określić jako ciąg, liczbę, wartość logiczną, mapę lub tablicę. |
Element <Claim>
ma te atrybuty:
- name – (wymagany) nazwa roszczenia.
- ref – (opcjonalny) nazwa zmiennej przepływu. Jeśli ten parametr jest obecny, zasada użyje wartości tego parametru jako twierdzenia. Jeśli podasz zarówno atrybut ref, jak i jednoznaczną wartość roszczenia, w parametrze wartość wyraźna jest wartością domyślną i jest używana, jeśli wskazana zmienna przepływu nie została rozwiązana.
- type – (opcjonalny) jeden z: ciąg (wartość domyślna), liczba, wartość logiczna lub mapa.
- array – (opcjonalny) ustaw wartość true, aby wskazać, czy wartość jest tablicą typów. Domyślne: false (fałsz).
<CriticalHeaders>
<CriticalHeaders>a,b,c</CriticalHeaders> or: <CriticalHeaders ref=’variable_containing_headers’/>
Dodaje nagłówek krytyczny (crit) do nagłówka JWT. nagłówek crit, to tablica nazw nagłówków, które muszą być znane i rozpoznawane przez odbiorcę JWT. Na przykład:
{ “typ: “...”, “alg” : “...”, “crit” : [ “a”, “b”, “c” ], }
W czasie działania zasada VerifyJWT sprawdza nagłówek crit.
W przypadku każdego elementu wymienionego w nagłówku crit sprawdza, czy element <KnownHeaders>
zasady weryfikacji JWT zawiera również ten nagłówek. Dowolny nagłówek znaleziony przez zasadę VerifyJWT w crit
który nie jest wymieniony w <KnownHeaders>
, powoduje niepowodzenie zasady VerifyJWT.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Typ | Tablica ciągów znaków rozdzielonych przecinkami |
Prawidłowe wartości | Tablica lub nazwa zmiennej zawierającej tablicę. |
<CustomClaims>
Uwaga: obecnie element CustomClaims jest wstawiony podczas dodawania nowego elementu Wygeneruj zasadę JWT za pomocą interfejsu użytkownika. Ten element nie działa i jest ignorowany. Prawidłowo zostanie użyty element <AdditionalClaims>. Interfejs użytkownika może zostać zaktualizowany, aby później wstawić prawidłowe elementy.
<ExpiresIn>
<ExpiresIn>time-value-here</ExpiresIn>
Określa czas życia tokena JWT w milisekundach, sekundach, minutach, godzinach lub dniach.
Domyślnie | N/A |
Obecność | Opcjonalnie |
Typ | Liczba całkowita |
Prawidłowe wartości |
Wartość lub odwołanie do zmiennej przepływu zawierającej wartość. Jednostkami czasu mogą być określone w następujący sposób:
Na przykład |
<Id>
<Id>explicit-jti-value-here</Id> -or- <Id ref='variable-name-here'/> -or- <Id/>
Generuje token JWT z konkretną deklaracjami jti. Gdy wartość tekstowa i atrybut ref są jednocześnie puste, zasada wygeneruje kod jti zawierający losowy identyfikator UUID. Deklaracja identyfikatora JWT (jti) jest – unikalny identyfikator tokena JWT. Więcej informacji na temat jti znajdziesz w dokumencie RFC7519.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Typ | Ciąg tekstowy lub odwołanie. |
Prawidłowe wartości | Ciąg tekstowy lub nazwa zmiennej przepływu zawierającej identyfikator. |
<IgnoreUnresolvedVariables>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
Jeśli chcesz, aby zasada zwracała błąd, gdy określona zmienna jest wskazana, ustaw wartość Fałsz. jest nierozstrzygnięta. Ustaw wartość „true”, aby traktować każdą nierozpoznawalną zmienną jako pusty ciąg znaków (null).
Domyślnie | Fałsz |
Obecność | Opcjonalnie |
Typ | Wartość logiczna |
Prawidłowe wartości | prawda lub fałsz |
<Issuer>
<Issuer ref='variable-name-here'/> <Issuer>issuer-string-here</Issuer>
Zasada generuje token JWT zawierający deklarację o nazwie iss i ustawionej wartości do określonej wartości. Deklaracja identyfikująca wydawcę JWT. To jest jeden z zarejestrowany zestaw roszczeń wymienionych w dokumencie RFC7519.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Typ | Ciąg lub odniesienie |
Prawidłowe wartości | Dowolny |
<NotBefore>
<!-- Specify an absolute time. --> <NotBefore>2017-08-14T11:00:21-07:00</NotBefore> -or- <!-- Specify a time relative to when the token is generated. --> <NotBefore>6h</NotBefore>
Określa czas, po którym token stanie się ważny. Token jest nieważny do określonego czasu. Możesz podać bezwzględną wartość czasu lub czas wygenerowania tokena.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
Prawidłowe wartości | Szczegółowe informacje znajdziesz poniżej. |
Prawidłowe wartości czasu dla elementu NotBefore dla wartości bezwzględnych
Nazwa | Format | Przykład |
sortowalna | yyyy-MM-dd'T'HH:mm:ss.SSSZ |
2017-08-14T11:00:21.269-0700 |
RFC 1123 | EEE, dd MMM yyyy HH:mm:ss zzz |
Pon, 14 sierpnia 2017 r. 11:00:21 PDT |
RFC 850 | EEEE, dd-MMM-yy HH:mm:ss zzz |
Poniedziałek, 14-sie-17 11:00:21 PDT |
ANCI-C | EEE MMM d HH:mm:ss yyyy |
Pon 14 sie 2017, 11:00:21 |
Jako względne wartości czasu podaj liczbę całkowitą i przedział czasu, na przykład:
- 10 s
- 60 min
- 12 godzin
<OutputVariable>
<OutputVariable>jwt-variable</OutputVariable>
Określa, gdzie umieścić token JWT wygenerowany przez tę zasadę. Domyślnie jest on umieszczany w sekcji
zmienna przepływu: jwt.POLICYNAME.generated_jwt
.
Domyślnie | jwt.POLICYNAME.generated_jwt |
Obecność | Opcjonalnie |
Typ | Ciąg znaków (nazwa zmiennej przepływu) |
<PrivateKey/Id>
<PrivateKey> <Id ref="flow-variable-name-here"/> </PrivateKey> or <PrivateKey> <Id>your-id-value-here</Id> </PrivateKey>
Określa identyfikator klucza (kid) do umieszczenia w nagłówku JWT. Tylko używanie gdy algorytm to RS256/RS384/RS512, PS256/PS384/PS512 lub ES256/ES384/ES512.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
Prawidłowe wartości | Zmienna lub ciąg znaków przepływu |
<PrivateKey/Password>
<PrivateKey> <Password ref="private.privatekey-password"/> </PrivateKey>
W razie potrzeby podaj hasło, którego zasada ma używać do odszyfrowania klucza prywatnego. Użyj ref, aby przekazać klucz w zmiennej przepływu. Tylko używanie gdy algorytm to RS256/RS384/RS512, PS256/PS384/PS512 lub ES256/ES384/ES512.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
Prawidłowe wartości |
Odwołanie do zmiennej przepływu.
Uwaga: musisz określić zmienną przepływu. Edge odrzuci jako nieprawidłową
konfiguracji zasad, w której hasło jest określone w postaci zwykłego tekstu. Zmienna przepływu
musi mieć prefiks „prywatny”. Na przykład: |
<PrivateKey/Value>
<PrivateKey> <Value ref="private.variable-name-here"/> </PrivateKey>
Określa klucz prywatny zakodowany w formacie PEM, który jest używany do podpisywania tokena JWT. Użyj atrybutu ref, aby przekazać w zmiennej przepływu. Używaj tylko wtedy, gdy algorytm to RS256/RS384/RS512, PS256/PS384/PS512 lub ES256/ES384/ES512.
Domyślnie | Nie dotyczy |
Obecność | Wymagane do generowania tokena JWT za pomocą algorytmu RS256. |
Typ | Ciąg znaków |
Prawidłowe wartości |
Zmienna przepływu zawierająca ciąg znaków reprezentujący wartość klucza prywatnego RSA zakodowaną w formacie PEM.
Uwaga: zmienna przepływu musi mieć prefiks „prywatna”. Przykład:
|
<SecretKey/Id>
<SecretKey> <Id ref="flow-variable-name-here"/> </SecretKey> or <SecretKey> <Id>your-id-value-here</Id> </SecretKey>
Określa identyfikator klucza (kid), który ma być zawarty w nagłówku JWT tokena JWT podpisanego za pomocą HMAC algorytmem bezpieczeństwa. Używaj tylko wtedy, gdy algorytm należy do kategorii HS256/HS384/HS512.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
Prawidłowe wartości | Zmienna lub ciąg znaków przepływu |
<SecretKey/Value>
<SecretKey> <Value ref="private.your-variable-name"/> </SecretKey>
Udostępnia tajny klucz używany do weryfikacji lub podpisywania tokenów za pomocą algorytmu HMAC. Tylko używanie gdy algorytm to HS256/HS384/HS512. Użyj atrybutu ref. aby przekazać klucz w zmiennej przepływu.
Edge wymusza minimalną siłę klucza w algorytmach HS256/HS384/HS512. Minimalna długość klucza W przypadku HS256 – 32 bajty, w przypadku HS384 – 48 bajtów, a w przypadku HS512 – 64 bajty. Użycie klucza o mniejszej mocy powoduje błąd środowiska wykonawczego.
Domyślnie | Nie dotyczy |
Obecność | Wymagane w przypadku algorytmów HMAC. |
Typ | Ciąg znaków |
Prawidłowe wartości |
Zmienna przepływu odnosząca się do ciągu znaków
Uwaga: zmienna przepływu musi mieć prefiks „private”. Dla:
przykład: |
<Subject>
<Subject>subject-string-here</Subject>
<Subject ref="flow_variable" />
Na przykład:
<Subject ref="apigee.developer.email"/>
Zasada generuje token JWT zawierający deklarację sub ustawioną na określoną wartość value.Ta deklaracja określa lub zawiera deklarację na temat podmiotu tokena JWT. To jest jeden z standardowy zestaw roszczeń wymienionych w dokumencie RFC7519.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
Prawidłowe wartości | Każda wartość jednoznacznie identyfikująca podmiot lub zmienna procesu odwołująca się do wartości. |
Zmienne przepływu
Zasada Wygeneruj token JWT nie ustawia zmiennych przepływu.
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 | Występuje, gdy |
---|---|---|
steps.jwt.AlgorithmInTokenNotPresentInConfiguration |
401 | Dzieje się tak, gdy zasada weryfikacji ma wiele algorytmów. |
steps.jwt.AlgorithmMismatch |
401 | Algorytm określony w zasadzie generowania nie był zgodny z algorytmem określonym w zasadzie weryfikacji. Podane algorytmy muszą się zgadzać. |
steps.jwt.FailedToDecode |
401 | Zasadom nie udało się zdekodować tokena JWT. Token JWT jest prawdopodobnie uszkodzony. |
steps.jwt.GenerationFailed |
401 | Nie udało się wygenerować tokena JWT za pomocą zasady. |
steps.jwt.InsufficientKeyLength |
401 | W przypadku klucza krótszego niż 32 bajty dla algorytmu HS256, mniej niż 48 bajtów w przypadku algorytmu HS386 i mniej niż 64 bajty w przypadku algorytmu HS512. |
steps.jwt.InvalidClaim |
401 | Brak zgodności z deklaracją lub zgłoszeniem albo brak zgodności nagłówka lub nagłówka. |
steps.jwt.InvalidCurve |
401 | Krzywa określona przez klucz jest nieprawidłowa dla algorytmu krzywych eliptycznych. |
steps.jwt.InvalidJsonFormat |
401 | W nagłówku lub ładunku znaleziono nieprawidłowy kod JSON. |
steps.jwt.InvalidToken |
401 | Ten błąd występuje, gdy weryfikacja podpisu JWT nie powiedzie się. |
steps.jwt.JwtAudienceMismatch |
401 | Podczas weryfikacji tokena nie udało się potwierdzić odbiorców. |
steps.jwt.JwtIssuerMismatch |
401 | Podczas weryfikacji tokena nie udało się zgłosić deklaracji wydawcy. |
steps.jwt.JwtSubjectMismatch |
401 | Żądanie tematu nie powiodło się podczas weryfikacji tokena. |
steps.jwt.KeyIdMissing |
401 | Zasada weryfikacji używa JWKS jako źródła kluczy publicznych, ale podpisany token JWT nie zawiera w nagłówku właściwości kid . |
steps.jwt.KeyParsingFailed |
401 | Nie udało się przeanalizować klucza publicznego na podstawie podanych informacji o kluczu. |
steps.jwt.NoAlgorithmFoundInHeader |
401 | Występuje, gdy token JWT nie zawiera nagłówka algorytmu. |
steps.jwt.NoMatchingPublicKey |
401 | Zasada weryfikacji używa JWKS jako źródła kluczy publicznych, ale kid w podpisanym tokenie JWT nie jest wymieniony w JWKS. |
steps.jwt.SigningFailed |
401 | W narzędziu Wygeneruj JWT dla klucza mniejszego niż minimalny rozmiar algorytmów HS384 lub HS512 |
steps.jwt.TokenExpired |
401 | Zasada próbuje zweryfikować wygasły token. |
steps.jwt.TokenNotYetValid |
401 | Token nie jest jeszcze prawidłowy. |
steps.jwt.UnhandledCriticalHeader |
401 | Nagłówek, który znajduje się w zasadzie weryfikacji JWT w nagłówku crit , nie jest wymieniony w KnownHeaders . |
steps.jwt.UnknownException |
401 | Wystąpił nieznany wyjątek. |
steps.jwt.WrongKeyType |
401 | Podano nieprawidłowy typ klucza. Możesz na przykład podać klucz RSA dla algorytmu krzywych eliptycznych lub klucz krzywej dla algorytmu RSA. |
Błędy wdrażania
Te błędy mogą wystąpić podczas wdrażania serwera proxy zawierającego te zasady.
Nazwa błędu | Przyczyna | Napraw |
---|---|---|
InvalidNameForAdditionalClaim |
Wdrożenie nie uda się, jeśli żądanie użyte w elemencie podrzędnym <Claim> elementu <AdditionalClaims> jest jedną z tych zarejestrowanych nazw: kid , iss , sub , aud , iat , exp , nbf lub jti .
|
build |
InvalidTypeForAdditionalClaim |
Jeśli żądanie użyte w elemencie podrzędnym <Claim> elementu <AdditionalClaims> nie jest typu string , number , boolean ani map , wdrożenie się nie uda.
|
build |
MissingNameForAdditionalClaim |
Jeśli nazwy deklaracji nie podasz w elemencie podrzędnym <Claim> elementu <AdditionalClaims> , wdrożenie się nie uda.
|
build |
InvalidNameForAdditionalHeader |
Ten błąd występuje, gdy nazwa roszczenia użytego w elemencie podrzędnym <Claim> elementu <AdditionalClaims> to alg lub typ .
|
build |
InvalidTypeForAdditionalHeader |
Jeśli typ deklaracji użyty w elemencie podrzędnym <Claim> elementu <AdditionalClaims> nie jest typu string , number , boolean ani map , wdrożenie się nie uda.
|
build |
InvalidValueOfArrayAttribute |
Ten błąd występuje, gdy wartość atrybutu tablicy w elemencie podrzędnym <Claim> elementu <AdditionalClaims> nie jest ustawiona na true lub false .
|
build |
InvalidConfigurationForActionAndAlgorithm |
Jeśli element <PrivateKey> jest używany w algorytmach rodziny HS lub element <SecretKey> jest używany w algorytmach rodziny RSA, wdrożenie się nie uda.
|
build |
InvalidValueForElement |
Jeśli wartość podana w elemencie <Algorithm> nie jest obsługiwaną wartością, wdrożenie się nie uda.
|
build |
MissingConfigurationElement |
Ten błąd występuje, jeśli element <PrivateKey> nie jest używany w algorytmach rodziny RSA lub jeśli element <SecretKey> nie jest używany w algorytmach rodziny HS.
|
build |
InvalidKeyConfiguration |
Jeśli element podrzędny <Value> nie jest zdefiniowany w elementach <PrivateKey> lub <SecretKey> , wdrożenie się nie uda.
|
build |
EmptyElementForKeyConfiguration |
Jeśli atrybut ref elementu podrzędnego <Value> elementów <PrivateKey> lub <SecretKey> jest pusty lub nieokreślony, wdrożenie się nie uda.
|
build |
InvalidVariableNameForSecret |
Ten błąd występuje, jeśli nazwa zmiennej przepływu podana w atrybucie ref elementu podrzędnego <Value> elementów <PrivateKey> lub <SecretKey> nie zawiera prywatnego prefiksu (private.) .
|
build |
InvalidSecretInConfig |
Ten błąd występuje, jeśli element podrzędny <Value> elementów <PrivateKey> lub <SecretKey> nie zawiera prywatnego prefiksu (private.) .
|
build |
InvalidTimeFormat |
Jeśli wartość podana w elemencie <NotBefore> nie ma obsługiwanego formatu, wdrożenie się nie uda.
|
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>