Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
Co
Generuje podpisany token JWT z konfigurowalnym zestawem deklaracji. Token JWT można następnie zwrócić klientom, przesłać do miejsc docelowych backendu lub użyć 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
- Generowanie tokena JWT podpisanym algorytmem HS256
- Generowanie tokena JWT podpisanym algorytmem RS256
Generowanie tokena JWT podpisanego za pomocą algorytmu HS256
Ta przykładowa zasada generuje nowy token JWT i podpisuje go za pomocą algorytmu HS256. HS256 wykorzystuje wspólny obiekt tajny do podpisywania i weryfikacji podpisu.
Po uruchomieniu tego działania zasady Edge zakoduje nagłówek i ładunek JWT, a następnie podpisuje token JWT cyfrowo. Obejrzyj film powyżej, aby zobaczyć pełny przykład, w tym, jak przesłać żądanie zgodności z zasadami.
Ta konfiguracja zasad utworzy token JWT z zestawem standardowych deklaracji zgodnie ze specyfikacją JWT, w tym wygaśnięciem po upływie godziny oraz dodatkowym zgłoszeniem. Możesz dodać dowolną liczbę dodatkowych roszczeń. Szczegółowe informacje o wymaganiach i opcjach dotyczących poszczególnych elementów w tych przykładowych zasadach znajdziesz w dokumentacji elementów.
<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 zawierać ł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ści roszczeń iat, exp i jti będą różne.
Generowanie tokena JWT podpisanym algorytmem RS256
Ta przykładowa zasada generuje nowy token JWT i podpisuje go za pomocą algorytmu RS256. Generowanie podpisu RS256 odbywa się przy użyciu klucza prywatnego RSA, który należy podać w postaci zakodowanej w formacie PEM. Obejrzyj film powyżej, aby zobaczyć pełny przykład, w tym, jak przesłać żądanie zgodności z zasadami.
Po uruchomieniu tego działania zasady Edge zakoduje i cyfrowo podpisze token JWT wraz z deklaracjami. Informacje o częściach tokena JWT oraz sposobach 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, których używasz do określenia klucza użytego do wygenerowania tokena JWT, zależą od wybranego algorytmu, jak pokazano w tej tabeli:
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 wymaganiach dotyczących klucza znajdziesz w artykule Informacje o algorytmach szyfrowania podpisów. |
Dokumentacja elementu w przypadku generowania tokena JWT
Dokumentacja zasad zawiera opis elementów i atrybutów zasady Wygeneruj token JWT.
Uwaga: konfiguracja będzie nieco się różnić w zależności od użytego algorytmu szyfrowania. W sekcji Przykłady znajdziesz przykłady konfiguracji dla konkretnych przypadków użycia.
Atrybuty stosowane 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. Znaki, których możesz używać w nazwie, są ograniczone do: A-Z0-9._\-$ % . Interfejs zarządzania brzegowymi wymusza jednak dodatkowe ograniczenia, takie jak automatyczne usuwanie znaków niealfanumerycznych.
Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
continueOnError |
Ustaw wartość false , aby zwracać błąd w przypadku niepowodzenia zasady. Jest to normalne działanie większości zasad.
Ustaw jako |
false | Opcjonalnie |
włączone |
Ustaw jako true , aby wymuszać zasadę.
Ustaw wartość |
prawda | Opcjonalnie |
async | Ten atrybut został wycofany. | false | Wycofano |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
Użyj oprócz atrybutu name, aby oznaczyć zasadę w edytorze serwera proxy interfejsu zarządzania 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 z deklaracjami aud ustawionymi na określoną wartość. Ta deklaracja określa odbiorców, dla których przeznaczony jest token JWT. Jest to jedno 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 identyfikuje odbiorców. |
<Dodatkowe roszczenia/roszczenie>
<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'/>
Pozwala określić dodatkowe pary nazwy i wartości deklaracji w ładunku JWT. Możesz określić deklarację wyraźnie jako ciąg znaków, liczbę, wartość logiczną, mapę lub tablica. Mapa to po prostu zestaw par nazwa/wartość.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Prawidłowe wartości | Dowolna wartość, której chcesz użyć w dodatkowym roszczeniu. Możesz określić deklarację wyraźnie jako ciąg znaków, liczbę, wartość logiczną, mapę lub tablica. |
Element <Claim>
przyjmuje te atrybuty:
- name – (wymagany) nazwa roszczenia.
- ref – (opcjonalny) nazwa zmiennej przepływu. Jeśli ta zmienna jest obecna, zasada będzie używać jej jako wartości deklaracji. Jeśli określony jest zarówno atrybut ref, jak i jawna wartość deklaracji, domyślna wartość jest jawna. Jest ona używana, gdy wskazywana zmienna przepływu jest nierozstrzygnięta.
- type – (opcjonalny) 1 z: ciąg znaków (domyślny), liczba, wartość logiczna lub mapa.
- tablica – (opcjonalnie) ustaw na true, by wskazać, czy wartość jest tablicą typów. Wartość domyślna: false.
Jeśli dodasz element <Claim>
, nazwy deklaracji będą ustawiane statycznie podczas konfigurowania zasady. Możesz też przekazać obiekt JSON, aby określić nazwy deklaracji.
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'/>
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 deklaracje w obiekcie JSON.
<Dodatkowe nagłówki/roszczenie>
<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 dodatkowe pary nazwy i wartości deklaracji w nagłówku tokena JWT.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Prawidłowe wartości | Dowolna wartość, której chcesz użyć w dodatkowym roszczeniu. Możesz określić deklarację wyraźnie jako ciąg znaków, liczbę, wartość logiczną, mapę lub tablica. |
Element <Claim>
przyjmuje te atrybuty:
- name – (wymagany) nazwa roszczenia.
- ref – (opcjonalny) nazwa zmiennej przepływu. Jeśli ta zmienna jest obecna, zasada będzie używać jej jako wartości deklaracji. Jeśli określony jest zarówno atrybut ref, jak i jawna wartość deklaracji, domyślna wartość jest jawna. Jest ona używana, gdy wskazywana zmienna przepływu jest nierozstrzygnięta.
- type – (opcjonalny) 1 z: ciąg znaków (domyślny), liczba, wartość logiczna lub mapa.
- tablica – (opcjonalnie) ustaw na true, by wskazać, czy wartość jest tablicą typów. Wartość domyślna: false.
<CriticalHeaders>
<CriticalHeaders>a,b,c</CriticalHeaders> or: <CriticalHeaders ref=’variable_containing_headers’/>
Dodaje krytyczny nagłówek crit do nagłówka JWT. Nagłówek crit to tablica nazw nagłówków, które muszą być znane i rozpoznawane przez odbiornik JWT. Na przykład:
{ “typ: “...”, “alg” : “...”, “crit” : [ “a”, “b”, “c” ], }
W czasie działania zasada weryfikacji JWT sprawdza nagłówek crit.
W przypadku każdego elementu wymienionego w nagłówku crit sprawdza, czy element <KnownHeaders>
zasady weryfikacji JWT też zawiera ten nagłówek. Każdy nagłówek, który znajduje się w zasadzie weryfikacji JWT w crit, a nie jest wymieniony w <KnownHeaders>
, powoduje niepowodzenie zasady weryfikacji JWT.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Typ | Tablica ciągów tekstowych rozdzielonych przecinkami |
Prawidłowe wartości | Tablica lub nazwa zmiennej zawierającej tablicę. |
<CustomClaims>
Uwaga: obecnie element CustomClaims jest wstawiony podczas dodawania w interfejsie nowej zasady WygenerujJWT. Ten element nie działa i jest ignorowany. Prawidłowy element, którego możesz użyć zamiast niego, to <AdditionalClaims>. Interfejs zostanie zaktualizowany tak, by później wstawić odpowiednie 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 odniesienie do zmiennej przepływu zawierającej wartość. Jednostki czasu można określić w ten sposób:
Na przykład |
<Identyfikator>
<Id>explicit-jti-value-here</Id> -or- <Id ref='variable-name-here'/> -or- <Id/>
Generuje token JWT z konkretnym żądaniem jti. Gdy zarówno wartość tekstowa, jak i atrybut ref są puste, zasada wygeneruje jti zawierający losowy identyfikator UUID. Deklaracja identyfikatora JWT (jti) jest unikalnym identyfikatorem tokena JWT. Więcej informacji na temat jti znajdziesz w dokumencie RFC7519.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Typ | Ciąg znaków lub odwołanie. |
Prawidłowe wartości | Może to być ciąg znaków lub nazwa zmiennej przepływu zawierającej identyfikator. |
<IgnoreUnresolvedVariables>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
Ustaw wartość „false”, jeśli chcesz, by zasada zgłaszała błąd, gdy jakakolwiek przywołana zmienna określona w zasadzie jest nierozwiązana. Ustaw wartość „true”, aby traktować każdą nierozwiązaną 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 deklaracja o nazwie iss,która ma ustawioną wartość. Deklaracja, która identyfikuje wydawcę tokena JWT. Jest to jeden z zarejestrowanych zestawów roszczeń wymienionych w dokumencie RFC7519.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Typ | Ciąg znaków lub odwołanie |
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, kiedy token staje się ważny. Token jest nieprawidłowy do określonego momentu. Możesz podać bezwzględną wartość czasu lub czas w stosunku do czasu 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 elementu NotBefore w przypadku bezwzględnych wartości czasu
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 sie 2017 11:00:21 PDT |
RFC 850 | EEEE, dd-MMM-yy HH:mm:ss zzz |
Poniedziałek, 14–17 sierpnia 11:00:21 PDT |
ANCI-C | EEE MMM d HH:mm:ss yyyy |
Pon 14 sie 11:00:21 2017 |
W przypadku względnych wartości czasu podaj liczbę całkowitą i okres, 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 umieszczony w zmiennej 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), który ma zostać uwzględniony w nagłówku JWT. Używaj tylko wtedy, gdy algorytmem jest 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 tekstowy przepływu |
<PrivateKey/Password>
<PrivateKey> <Password ref="private.privatekey-password"/> </PrivateKey>
W razie potrzeby podaj hasło, którego zasada ma używać do odszyfrowywania klucza prywatnego. Użyj atrybutu ref, aby przekazać klucz w zmiennej przepływu. Używaj tylko wtedy, gdy algorytmem jest 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 |
Odniesienie do zmiennej przepływu.
Uwaga: musisz podać zmienną przepływu. Edge odrzuci jako nieprawidłową konfigurację zasad, w której hasło jest podane w formie tekstu jawnego. Zmienna przepływu musi mieć prefiks „private”. Przykład: |
<PrivateKey/Value>
<PrivateKey> <Value ref="private.variable-name-here"/> </PrivateKey>
Określa klucz prywatny zakodowany w formacie PEM używany do podpisywania tokena JWT. Użyj atrybutu ref, aby przekazać klucz w zmiennej przepływu. Użyj tylko wtedy, gdy algorytm to RS256/RS384/RS512, PS256/PS384/PS512 lub ES256/ES384/ES512.
Domyślnie | Nie dotyczy |
Obecność | Wymagane do wygenerowania 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 „private”. 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 zostać uwzględniony w nagłówku JWT tokena JWT podpisanym algorytmem HMAC. Używaj tylko wtedy, gdy algorytm to HS256/HS384/HS512.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
Prawidłowe wartości | Zmienna lub ciąg tekstowy przepływu |
<SecretKey/Value>
<SecretKey> <Value ref="private.your-variable-name"/> </SecretKey>
Udostępnia tajny klucz używany do weryfikowania lub podpisywania tokenów za pomocą algorytmu HMAC. Używaj tylko wtedy, gdy algorytm ma typ HS256/HS384/HS512. Użyj atrybutu ref, aby przekazać klucz w zmiennej przepływu.
W przypadku algorytmów HS256/HS384/HS512 Edge wymusza minimalną siłę klucza. Minimalna długość klucza w przypadku HS256 to 32 bajty, w przypadku HS384 – 48 bajtów, a w przypadku HS512 – 64 bajty. Użycie klucza o niższej sile powoduje błąd środowiska wykonawczego.
Domyślnie | Nie dotyczy |
Obecność | Wymagany 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: jeśli zmienna przepływu musi mieć prefiks „prywatny”. np. |
<Subject>
<Subject>subject-string-here</Subject>lub
<Subject ref="flow_variable" />
Na przykład:
<Subject ref="apigee.developer.email"/>
Zasada generuje token JWT zawierający deklarację sub z określoną wartością.Ta deklaracja identyfikuje temat JWT lub zawiera instrukcję na jego temat. Jest to jeden ze standardowych zestawów twierdzeń wymienionych w dokumencie RFC7519.
Domyślnie | Nie dotyczy |
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
Prawidłowe wartości | Dowolna wartość jednoznacznie identyfikująca podmiot lub zmienną przepływu odnoszącą się do wartości. |
Zmienne przepływu
Zasada tworzenia tokena JWT nie ustawia zmiennych przepływu.
Informacje o błędach
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, gdy wystąpi błąd środowiska wykonawczego. Więcej informacji znajdziesz w artykule Co musisz wiedzieć 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 środowiska wykonawczego powyżej. Nazwa błędu to ostatnia część kodu. | fault.name Matches "TokenExpired" |
JWT.failed |
Wszystkie zasady JWT ustawiają tę samą zmienną na wypadek niepowodzenia. | JWT.failed = true |
Przykładowa odpowiedź na błąd
W przypadku obsługi błędów najlepiej jest zablokować część errorcode
odpowiedzi błędu. Nie polegaj na tekście w polu 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>