Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
UnresolvedVariable
Kod błędu
steps.basicauthentication.UnresolvedVariable
Treść odpowiedzi na błąd
{
"fault": {
"faultstring": "Unresolved variable : [variable_name]",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Przykładowy komunikat o błędzie
{
"fault": {
"faultstring": "Unresolved variable : request.header.Authorization",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Przyczyna
Ten błąd występuje, jeśli zmienna zawierająca ciąg zakodowany w standardzie Base64 określony w elemencie <Source>
zasady uwierzytelniania podstawowego to:
- Poza zakresem (niedostępne w konkretnym procesie, w którym są realizowane zasady)
- Nie można go rozwiązać (nie jest zdefiniowany)
Ten błąd występuje na przykład wtedy, gdy zasada BasicAuthentication zawiera zmienną określoną jako request.header.Authorization
w elemencie <Source>
, ale nagłówek autoryzacji nie jest przekazywany w ramach żądania do interfejsu API.
Diagnostyka
Określ zmienną używaną w elemencie
<Source>
w zasadzie BasicAuthentication. Te informacje znajdziesz w elemenciefaultstring
odpowiedzi na błąd. Na przykład w tymfaultstring,
zmienna używana w elemencie<Source>
ma wartośćrequest.header.Authorization
:"faultstring": "Unresolved variable : request.header.Authorization"
Sprawdź wszystkie zasady uwierzytelniania podstawowego na konkretnym serwerze proxy interfejsu API, na którym wystąpił błąd. Może istnieć co najmniej 1 zasada uwierzytelniania podstawowego. Zidentyfikuj konkretną zasadę uwierzytelniania BasicAuthentication lub zasady, w których zmienna określona w elemencie
<Source>
pasuje do nazwy zmiennej określonej w ciągu błędu (krok 1 powyżej).Na przykład ta zasada ustawia element
<Source>
na zmienną o nazwierequest.header.Authorization
, która odpowiada zawartościfaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <BasicAuthentication name="DecodeBaseAuthHeaders"> <DisplayName>Decode Basic Authentication Header</DisplayName> <Operation>Decode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="request.header.username"/> <Password ref="request.header.password"/> <Source>request.header.Authorization</Source> </BasicAuthentication>
Określ, czy zmienna jest zdefiniowana i dostępna w przepływie, w którym jest wykonywana zasada uwierzytelniania Basic.
Jeśli zmienna to:
- Poza zakresem (niedostępne w konkretnym procesie, w którym są realizowane zasady)
- Nie można go rozwiązać (nie jest zdefiniowany)
To właśnie jest przyczyną błędu.
W przedstawionej wyżej przykładowej zasadzie uwierzytelniania podstawowego zmienna
request.header.Authorization
nie została przekazana w żądaniu. Oznacza to, że żądanie do interfejsu API zostało przesłane bez nagłówka Authorization, jak pokazano poniżej:curl -v "http://org-env.apigee.net/basicauth"
Zmienna używana w zasadzie uwierzytelniania podstawowego jest niedostępna, dlatego pojawia się kod błędu:
steps.basicauthentication.UnresolvedVariable
Rozdzielczość
Upewnij się, że zmienna używana w zasadzie uwierzytelniania podstawowego jest zdefiniowana lub przekazywana jako dane wejściowe i dostępna w przepływie wykonywania zasady.
Aby rozwiązać problem z omówionymi powyżej przykładowymi zasadami uwierzytelniania podstawowego, wyślij żądanie do interfejsu API w następujący sposób:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
InvalidBasicAuthenticationSource
Kod błędu
steps.basicauthentication.InvalidBasicAuthenticationSource
Treść odpowiedzi na błąd
{
"fault": {
"faultstring": "Source variable : [variable_name] for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Przykładowy komunikat o błędzie
{
"fault": {
"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Możliwe przyczyny
Możliwe przyczyny tego błędu:
Przyczyna | Opis |
---|---|
Nieprawidłowa zmienna źródłowa | Zmienna źródła danych wejściowych zasady uwierzytelniania podstawowego nie jest prawidłowym ciągiem zakodowanym w Base64. |
Nieprawidłowy format nagłówka | Nagłówek zawierający ciąg zakodowany w standardzie Base64 przekazywany do zasady uwierzytelniania podstawowego ma nieprawidłowy format. |
Przyczyna: nieprawidłowa zmienna źródłowa
Ten błąd występuje, jeśli zmienna zawierająca ciąg zakodowany w standardzie Base64 określony w elemencie <Source>
zasady uwierzytelniania Basic nie zawiera prawidłowej wartości.
Ten błąd występuje na przykład, jeśli zmienna określona w elemencie <Source>
zasady BasicAuthentication nie ma prawidłowego ciągu zakodowanego w standardzie Base64.
Diagnostyka
Określ zmienną używaną w elemencie
<Source>
w zasadzie BasicAuthentication. Te informacje znajdziesz w elemenciefaultstring
odpowiedzi na błąd. Na przykład w tymfaultstring,
zmienna używana w elemencie<Source>
ma wartośćrequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Sprawdź wszystkie zasady uwierzytelniania podstawowego na konkretnym serwerze proxy interfejsu API, na którym wystąpił błąd. Może istnieć co najmniej 1 zasada uwierzytelniania podstawowego. Określ konkretne zasady uwierzytelniania BasicAuthentication, w których zmienna określona w elemencie
<Source>
pasuje do nazwy zmiennej określonej w ciągu błędu (krok 1 powyżej).Na przykład ta zasada ustawia element
<Source>
na zmienną o nazwierequest.header.Authorization
, która odpowiada zawartościfaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <BasicAuthentication name="DecodeBaseAuthHeaders"> <DisplayName>Decode Basic Authentication Header</DisplayName> <Operation>Decode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="request.header.username"/> <Password ref="request.header.password"/> <Source>request.header.Authorization</Source> </BasicAuthentication>
Jeśli wartość przechowywana w zmiennej określonej w elemencie
<Source>
nie jest prawidłowym ciągiem zakodowanym w standardzie Base64,to jest przyczyną błędu.
W powyższej przykładowej zasadzie uwierzytelniania podstawowego zmienna
request.header.Authorization
wysłana przez klienta jako nagłówek była nieprawidłowa:curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic 23435"
Zmienna
request.header.Authorization
zawiera nieprawidłowy ciąg znaków „23435"
” zakodowany w standardzie Base64, dlatego otrzymujesz kod błędu:steps.basicauthentication.InvalidBasicAuthenticationSource
Rozdzielczość
Sprawdź, czy zmienna określona dla elementu <Source>
w zasadzie uwierzytelniania Basic zawiera prawidłowy ciąg zakodowany w standardzie Base64.
Aby rozwiązać problem z omówioną powyżej przykładową zasadą uwierzytelniania podstawowego, wyślij żądanie do interfejsu API, przekazując prawidłowy ciąg zakodowany w standardzie Base64 w nagłówku autoryzacji, jak pokazano poniżej:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Przyczyna: nagłówek jest zniekształcony lub nieprawidłowy
Ten błąd występuje, jeśli nagłówek przekazywany do zasady uwierzytelniania Basic jest uszkodzony lub nieprawidłowy.
Ten błąd występuje na przykład, jeśli zasada BasicAuthentication zawiera zmienną określoną jako request.header.Authorization
w elemencie <Source>
, a nagłówek przekazywany w ramach żądania do interfejsu API ma nieprawidłowy format lub jest nieprawidłowy.
Diagnostyka
Określ zmienną używaną w elemencie
<Source>
w zasadzie BasicAuthentication. Te informacje znajdziesz w elemenciefaultstring
odpowiedzi na błąd. Na przykład w tym błędzie zmienna używana w elemencie<Source>
torequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Sprawdź wszystkie zasady uwierzytelniania podstawowego na konkretnym serwerze proxy interfejsu API, na którym wystąpił błąd. Może istnieć co najmniej 1 zasada uwierzytelniania podstawowego. Określ konkretne zasady uwierzytelniania BasicAuthentication, w których zmienna określona w elemencie
<Source>
pasuje do nazwy zmiennej określonej w ciągu błędu (krok 1 powyżej).Na przykład ta zasada ustawia element
<Source>
na zmienną o nazwierequest.header.Authorization
, która odpowiada zawartościfaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <BasicAuthentication name="DecodeBaseAuthHeaders"> <DisplayName>Decode Basic Authentication Header</DisplayName> <Operation>Decode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="request.header.username"/> <Password ref="request.header.password"/> <Source>request.header.Authorization</Source> </BasicAuthentication>
Jeśli zmienna jest nagłówkiem i ma nieprawidłowy format lub jest nieprawidłowa, tj. nie ma określonego typu uwierzytelniania lub typ uwierzytelniania jest inny niż „Podstawowe”, to jest to przyczyna błędu.
Nagłówek autoryzacji ma taką postać:
Authorization: <Authentication type> <credentials>
Nieprawidłowy nagłówek można przekazać do zasady BasicAuthentication na 2 sposoby:
Przykład 1. Brak typu uwierzytelniania w nagłówku:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: YWthc2g6MTIz"
W powyższym przykładzie nagłówek Authorization nie zawiera typu Authentication. Jeśli ten nagłówek zostanie przekazany do podanej powyżej zasady uwierzytelniania Basic, otrzymasz kod błędu:
steps.basicauthentication.InvalidBasicAuthenticationSource
Przykład 2: typ uwierzytelniania nie jest typu „Podstawowe”:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
W powyższym przykładzie nagłówek autoryzacji nie ma typu uwierzytelniania „Podstawowe”. Jeśli zostanie ono przekazane do przedstawionych powyżej zasad uwierzytelniania podstawowego, zobaczysz kod błędu:
steps.basicauthentication.InvalidBasicAuthenticationSource
Ten błąd może też wystąpić, jeśli w nagłówku Autoryzacja jest używany typ uwierzytelniania, na przykład Bearer, Digest Auth itd.
Rozdzielczość
Upewnij się, że nagłówek, w którym są przekazywane dane wejściowe zasady uwierzytelniania podstawowego, ma ustawiony typ uwierzytelniania „Podstawowe”.
Aby rozwiązać problem z omówioną powyżej przykładową zasadą uwierzytelniania podstawowego, wyślij żądanie do interfejsu API, przekazując prawidłowy ciąg zakodowany w standardzie Base64 z użyciem opcji „Podstawowe” Typ uwierzytelniania w nagłówku autoryzacji, jak pokazano poniżej:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"