Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
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 znaków zakodowany w formacie Base64 określona w elemencie <Source>
w zasadach BasicAuthentication:
- Poza zakresem (niedostępne w konkretnym procesie, w którym są realizowane zasady)
- Nie można rozwiązać (niezdefiniowana)
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
Zidentyfikuj zmienną używaną dla elementu
<Source>
w zasadach BasicAuthentication. Te informacje znajdziesz w elemenciefaultstring
odpowiedzi na błąd. Na przykład w tym elemenciefaultstring,
zmienna używana w elemencie<Source>
torequest.header.Authorization
:"faultstring": "Unresolved variable : request.header.Authorization"
Sprawdź wszystkie zasady BasicAuthentication w przypadku konkretnego interfejsu API Proxy, w którym wystąpił błąd. Możesz mieć co najmniej 1 zasadę BasicAuthentication. Zidentyfikuj konkretną zasadę BasicAuthentication, w której zmienna określona w elemencie
<Source>
pasuje do nazwy zmiennej wskazanej w ciągu błędów (krok 1 powyżej).Na przykład w tej regule element
<Source>
jest ustawiony na zmienną o nazwierequest.header.Authorization
, która odpowiada wartości w elemenciefaultstring
:<?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>
Sprawdź, czy zmienna jest zdefiniowana i dostępna w przepływie, w którym jest wykonywana zasada BasicAuthentication.
Jeśli zmienna jest:
- Poza zakresem (niedostępne w ramach konkretnego procesu, w którym jest wykonywana zasada)
- Nie można rozwiązać (niezdefiniowana)
To jest przyczyna błędu.
W przykładzie zasad BasicAuthentication pokazanych powyżej zmienna
request.header.Authorization
nie została przekazana jako część żądania. Oznacza to, że żądanie interfejsu API zostało wysł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 opisaną powyżej przykładową zasadą BasicAuthentication, wyślij żądanie interfejsu API w ten 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"
}
}
}
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 w zasadach dotyczących uwierzytelniania podstawowego nie jest prawidłowym ciągiem znaków zakodowanym w formacie Base64. |
Nieprawidłowy format nagłówka | Nagłówek zawierający ciąg tekstowy zakodowany w formacie base64 przekazany do zasad BasicAuthentication jest nieprawidłowy. |
Przyczyna: nieprawidłowa zmienna źródła
Ten błąd występuje, gdy zmienna zawierająca ciąg znaków zakodowany w formacie Base64 określona w elemencie <Source>
zasady BasicAuthentication nie zawiera prawidłowej wartości.
Ten błąd występuje na przykład, gdy zmienna określona w elemencie <Source>
w zasadach BasicAuthentication nie zawiera prawidłowego ciągu znaków zakodowanego w formacie Base64.
Diagnostyka
Zidentyfikuj zmienną używaną dla elementu
<Source>
w zasadach BasicAuthentication. Te informacje znajdziesz w elemenciefaultstring
odpowiedzi na błąd. Na przykład w tym elemenciefaultstring,
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 BasicAuthentication w przypadku konkretnego interfejsu API Proxy, w którym wystąpił błąd. Możesz mieć co najmniej 1 zasadę BasicAuthentication. Zidentyfikuj konkretne zasady BasicAuthentication, w których zmienna określona w elemencie
<Source>
odpowiada nazwie zmiennej wskazanej w ciągu błędów (czynność 1 powyżej).Na przykład w tej regule element
<Source>
jest ustawiony na zmienną o nazwierequest.header.Authorization
, która pasuje do wartości w elemenciefaultstring
:<?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 podanej 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 zakodowany w formacie base64 „23435"
”, więc otrzymasz kod błędu:steps.basicauthentication.InvalidBasicAuthenticationSource
Rozdzielczość
Upewnij się, że zmienna określona dla elementu <Source>
w zasadach BasicAuthentication zawiera prawidłowy ciąg zakodowany w formacie Base64.
Aby rozwiązać problem z omawianą powyżej przykładową zasadą BasicAuthentication, wyślij żądanie do interfejsu API, przekazując prawidłowy ciąg zakodowany w formacie Base64 w nagłówku Authorization, jak pokazano poniżej:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Przyczyna: nieprawidłowy lub źle sformatowany nagłówek
Ten błąd występuje, jeśli nagłówek przekazany do zasady BasicAuthentication jest nieprawidłowy lub ma nieprawidłowy format.
Ten błąd występuje na przykład, gdy zasada BasicAuthentication ma zmienną określoną jako request.header.Authorization
w elemencie <Source>
, a nagłówek przekazany jako część żądania interfejsu API jest nieprawidłowo sformatowany lub nieprawidłowy.
Diagnostyka
Zidentyfikuj zmienną używaną dla elementu
<Source>
w zasadach BasicAuthentication. Te informacje znajdziesz w elemenciefaultstring
odpowiedzi na błąd. Na przykład w tym błędzie zmienna używana dla elementu<Source>
torequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Sprawdź wszystkie zasady BasicAuthentication w przypadku konkretnego interfejsu API Proxy, w którym wystąpił błąd. Może istnieć co najmniej 1 zasada uwierzytelniania podstawowego. Określ konkretne zasady uwierzytelniania podstawowego, w których zmienna określona w elemencie
<Source>
odpowiada nazwie 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 jest źle sformatowana lub nieprawidłowa, np. nie ma typu uwierzytelniania lub typ uwierzytelniania nie jest „Podstawowe”, to jest to przyczyna błędu.
Nagłówek Authorization ma taki format:
Authorization: <Authentication type> <credentials>
Nieprawidłowy nagłówek można przekazać do reguły 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 zasady BasicAuthentication pokazanej powyżej, otrzymasz kod błędu:
steps.basicauthentication.InvalidBasicAuthenticationSource
Przykład 2: typ uwierzytelniania nie jest typem „Podstawowe”:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
W powyższym przykładzie nagłówek Authorization nie ma typu uwierzytelniania „Basic”. Jeśli zostanie on przekazany do zasady BasicAuthentication pokazanej powyżej, otrzymasz kod błędu:
steps.basicauthentication.InvalidBasicAuthenticationSource
Ten błąd może też wystąpić, jeśli w nagłówku Authorization jest używany typ uwierzytelniania, np. Bearer, Digest Auth itp.
Rozdzielczość
Upewnij się, że nagłówek, w którym przekazywane jest wejście do reguły BasicAuthentication, ma typ uwierzytelniania „Basic”.
Aby rozwiązać problem z omówioną powyżej przykładową zasadą uwierzytelniania podstawowego, wyślij żądanie do interfejsu API, przekazując w nagłówku autoryzacji prawidłowy ciąg zakodowany w standardzie Base64 z typem uwierzytelniania „Podstawowe” w nagłówku autoryzacji, jak pokazano poniżej:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"