Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
FailedToDecode
Kod błędu
steps.jwt.FailedToDecode
Treść odpowiedzi na błąd
{
"fault": {
"faultstring": "Failed to Decode Token: policy({0})",
"detail": {
"errorcode": "steps.jwt.FailedToDecode"
}
}
}
Przyczyna
Ten błąd występuje, jeśli token sieciowy JSON (JWT) określony w elemencie <Source>
zasady dekodowania JWT jest nieprawidłowy, nieprawidłowy lub w inny sposób nie umożliwia dekodowania.
Prawidłowo sformatowany token JWT powinien zawierać nagłówek, ładunek i podpis w tym formacie: header.payload.signature
. Jeśli w tokenie JWT przekazywanym do zasady DecodeJWT brakuje części składowej, wystąpi błąd. Jeśli na przykład token JWT zawiera tylko payload.signature
, ale brakuje w nim header
, wystąpi błąd.
Diagnostyka
Wskaż zmienną określoną w elemencie
<Source>
zasady JWT. Ta zmienna powinna zawierać token JWT.Oto przykładowa zasada dekodowania JWT:
<DecodeJWT name="JWT-Decode-HS256"> <DisplayName>JWT Verify HS256</DisplayName> <Source>request.header.authorization</Source> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </DecodeJWT>
W powyższym przykładzie token JWT powinien znajdować się w nagłówku żądania autoryzacji.
Sprawdź zmienną zidentyfikowaną w kroku 1 i sprawdź, czy zawiera ona prawidłowy token JWT. Jeśli podany token JWT jest nieprawidłowy, jest to przyczyną błędu.
W przykładowym żądaniu interfejsu API poniżej token JWT jest przekazywany w nagłówku żądania Autoryzacja:
curl -v "http://<org>-<env>.apigee.net/v1/decodeJWT" -H "Authorization: Bearer eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM"
Po dokładnym sprawdzeniu tokena JWT wykazano, że ma on nieprawidłowy format
payload.signature
. Oczekiwany format JWT toheader.payload.signature
. W wyniku tego zasada Dekoduj JWT kończy się niepowodzeniem z błędem :"faultstring": "Failed to Decode Token: policy({0})"
Rozdzielczość
Upewnij się, że token JWT przekazany do reguły Dekoduj JWT zawiera wszystkie 3 elementy, jest prawidłowo sformatowany i można go zdekodować.
Aby poprawić powyższy przykład, możesz podać prawidłowy token JWT w formacie header.payload.signature
. Aby to zrobić, wywołaj interfejs API za pomocą polecenia cURL w ten sposób:
curl -v "http://<org>-<env>.apigee.net/v1/decodeJWT" -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM"
InvalidToken
Kod błędu
steps.jwt.InvalidToken
Treść odpowiedzi na błąd
{
"fault": {
"faultstring": "Invalid token: policy({0})",
"detail": {
"errorcode": "steps.jwt.InvalidToken"
}
}
}
Przyczyna
Ten błąd występuje, jeśli zmienna przepływu określona w elemencie <Source>
zasady dekodowania JWT to:
- poza zakresem (niedostępne w ramach konkretnego procesu, w którym są realizowane zasady) lub
- nie może zostać rozwiązana (nie jest zdefiniowana).
Diagnostyka
Wskaż zmienną określoną w elemencie
<Source>
zasady JWT. Ta zmienna powinna zawierać token JWT.Oto przykład zasady dekodowania JWT:
<DecodeJWT name="JWT-Decode-HS256"> <DisplayName>JWT Verify HS256</DisplayName> <Source>request.header.authorization</Source> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </DecodeJWT>
W powyższym przykładzie nagłówek żądania autoryzacji powinien zawierać token JWT.
Sprawdź, czy zmienna określona w kroku 1 jest zdefiniowana i dostępna w przepływie, w którym jest wykonywana zasada Dekoduj JWT.
Jeśli zmienna jest:
- poza zakresem (niedostępne w ramach konkretnego procesu, w którym jest wykonywana zasada) lub
- nie może zostać rozwiązana (nie jest zdefiniowana).
to jest przyczyną błędu.
W przykładowym żądaniu interfejsu API poniżej użytkownik nie przekazuje tokena JWT w nagłówku żądania autoryzacji.
curl -v "http://<org>-<env>.apigee.net/v1/decodeJWT"
Ponieważ nagłówek żądania autoryzacji nie jest przekazywany, zasada dekodowania JWT kończy się niepowodzeniem z błędem:
"faultstring": "Invalid token: policy({0})"
Rozdzielczość
Upewnij się, że zmienna, do której odwołuje się element <Source>
w zasadach dekodowania tokena JWT, jest zdefiniowana, zawiera prawidłowy (możliwy do dekodowania) token JWT i jest dostępna w określonym przepływie, w którym są wykonywane zasady dekodowania tokena JWT.
Aby poprawić ten przykład, możesz przekazać prawidłowy token JWT w nagłówku autoryzacji żądania. Aby to zrobić, wywołaj interfejs API za pomocą polecenia cURL w ten sposób:
curl -v "http://<org>-<env>.apigee.net/v1/decodeJWT" -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM"