Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Co
Dekoduje nagłówek JWS bez weryfikowania podpisu JWS i zapisuje każdy nagłówek w zmiennej przepływu. Ta zasada jest najbardziej przydatna w połączeniu z zasadą VerifyJWS, gdy wartość nagłówka w JWS musi być znana przed zweryfikowaniem podpisu JWS.
JWS może mieć dołączony ładunek, np. w takiej postaci:
header.payload.signature
JWS może też pomijać ładunek, który jest nazywany odłączonym ładunkiem, i mieć taką postać:
header..signature
Zasada DecodeJWS działa w obu przypadkach, ponieważ dekoduje tylko część nagłówka JWS. Zasada DecodeJWS działa też niezależnie od algorytmu użytego do podpisania JWS.
Szczegółowe wprowadzenie i omówienie formatu JWS znajdziesz w artykule Omówienie zasad JWS i JWT.
Wideo
Obejrzyj krótki film, aby dowiedzieć się, jak dekodować token JWT. Ten film dotyczy tokena JWT, ale wiele koncepcji jest takich samych w przypadku JWS.
Przykład: dekodowanie JWS
Zasada pokazana poniżej dekoduje JWS znaleziony w zmiennej przepływu var.JWS. Ta zmienna musi być obecna i zawierać prawidłowy (dekodowalny) JWS. Zasada może pobrać JWS z dowolnej zmiennej przepływu.
<DecodeJWS name="JWS-Decode-HS256"> <DisplayName>JWS Verify HS256</DisplayName> <Source>var.JWS</Source> </DecodeJWS>
W przypadku każdego nagłówka w części nagłówka JWS zasada ustawia zmienną przepływu o nazwie:
jws.policy-name.header.header-name
Jeśli JWS ma dołączony ładunek, zasada ustawia zmienną przepływu jws.policy-name.header.payload
na ładunek. W przypadku odłączonego ładunku payload jest pusty.
Pełną listę zmiennych ustawianych przez tę zasadę znajdziesz w artykule Zmienne przepływu.
Dokumentacja elementu Decode JWS
Dokumentacja zasady opisuje elementy i atrybuty zasady Decode JWS.
Atrybuty, które mają zastosowanie do elementu najwyższego poziomu
<DecodeJWS name="JWS" continueOnError="false" enabled="true" async="false">
Te atrybuty są wspólne dla wszystkich elementów nadrzędnych zasad.
| Atrybut | Opis | Domyślna | Obecność |
|---|---|---|---|
| name |
Wewnętrzna nazwa zasady. Nazwa może zawierać tylko te znaki:
A-Z0-9._\-$ %. Interfejs zarządzania Edge wymusza jednak dodatkowe
ograniczenia, np. automatycznie usuwa znaki, które nie są alfanumeryczne.
Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
| continueOnError |
Ustaw wartość false, aby zwracać błąd, gdy zasada nie działa. Jest to oczekiwane
zachowanie w przypadku większości zasad.
Ustaw wartość |
fałsz | Opcjonalny |
| enabled |
Ustaw wartość true, aby wymusić stosowanie zasady.
Ustaw wartość |
prawda | Opcjonalny |
| async | Ten atrybut został wycofany. | fałsz | Wycofano |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
Użyj tego elementu oprócz atrybutu name, aby oznaczyć zasadę w edytorze proxy w interfejsie zarządzania inną nazwą w języku naturalnym.
| Domyślna | Jeśli pominiesz ten element, zostanie użyta wartość atrybutu name zasady. |
| Obecność | Opcjonalny |
| Typ | Ciąg znaków |
<Source>
<Source>JWS-variable</Source>
Jeśli ten element jest obecny, określa zmienną przepływu, w której zasada ma znaleźć JWS do dekodowania.
| Domyślna | request.header.authorization (ważne informacje o wartości domyślnej znajdziesz w uwadze powyżej). |
| Obecność | Opcjonalny |
| Typ | Ciąg znaków |
| Prawidłowe wartości | Nazwa zmiennej przepływu Edge |
Zmienne przepływu
Po pomyślnym zakończeniu zostają ustawione zasady Weryfikuj JWS i Decode JWS. zmiennych kontekstowych zgodnie z tym wzorcem:
jws.{policy_name}.{variable_name}
Jeśli na przykład nazwa zasady to verify-jws, to zasada będzie przechowywać
algorytm określony w JWS na tę zmienną kontekstową:
jws.verify-jws.header.algorithm
| Nazwa zmiennej | Opis |
|---|---|
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. |
header.algorithm |
Algorytm podpisywania używany w JWS. 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 JWS. Zobacz też „Using a JSON Web Key Set” (Używanie zestawu kluczy internetowych JSON) (JWKS)” w JWT i JWS omówienie zasad, aby zweryfikować JWS. Więcej informacji znajdziesz w sekcji Parametr nagłówka(identyfikator klucza). |
header.type |
Wartość typu nagłówka. Więcej informacji znajdziesz w sekcji Parametr nagłówka(typ). |
header.name |
Wartość nazwanego nagłówka (standardowy lub dodatkowy). Jedno z nich zostanie ustawione na każdego dodatkowego nagłówka w nagłówkowej części JWS. |
header-json |
Nagłówek w formacie JSON. |
payload |
Ładunek JWS, jeśli JWS ma dołączony ładunek. W przypadku ładunku odłączonego ta zmienna jest pusta. |
valid |
W przypadku VerifyJWS ta zmienna ma wartość true (prawda), gdy podpis zostanie zweryfikowany, 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 DecodeJWS ta zmienna nie jest ustawiona. |
Dokumentacja błędów
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.jws.FailedToDecode |
401 | Nie udało się zdekodować JWS za pomocą zasady. Być może JWS jest uszkodzony. |
steps.jws.FailedToResolveVariable |
401 | Występuje, gdy zmienna przepływu określona w elemencie <Source> zasady nie istnieje. |
steps.jws.InvalidClaim |
401 | Brak zgodności z deklaracją lub zgłoszeniem albo brak zgodności nagłówka lub nagłówka. |
steps.jws.InvalidJsonFormat |
401 | W nagłówku JWS znaleziono nieprawidłowy kod JSON. |
steps.jws.InvalidJws |
401 | Ten błąd występuje, gdy weryfikacja podpisu JWS nie powiedzie się. |
steps.jws.InvalidPayload |
401 | Ładunek JWS jest nieprawidłowy. |
steps.jws.InvalidSignature |
401 | Element <DetachedContent> jest pominięty, a JWS ma odłączony ładunek treści. |
steps.jws.MissingPayload |
401 | Brak ładunku JWS. |
steps.jws.NoAlgorithmFoundInHeader |
401 | Występuje, gdy JWS pomija nagłówek algorytmu. |
steps.jws.UnknownException |
401 | Wystąpił nieznany wyjątek. |
Błędy wdrażania
Te błędy mogą wystąpić podczas wdrażania serwera proxy zawierającego te zasady.
| Nazwa błędu | Występuje, gdy |
|---|---|
InvalidAlgorithm |
Jedyne prawidłowe wartości to: RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, HS256, HS384, HS512. |
|
|
Inne możliwe błędy wdrażania. |
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" |
JWS.failed |
Wszystkie zasady JWS ustawiają tę samą zmienną w przypadku awarii. | jws.JWS-Policy.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="JWS Policy Errors">
<Step>
<Name>JavaScript-1</Name>
<Condition>(fault.name Matches "TokenExpired")</Condition>
</Step>
<Condition>JWS.failed=true</Condition>
</FaultRule>
</FaultRules>