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ślony w elemencie <Source> zasady BasicAuthentication jest:
- Poza zakresem (niedostępne w określonym procesie, w którym są wykonywane zasady)
- Nie można rozwiązać (nie jest zdefiniowany)
Na przykład ten błąd występuje, jeśli w zasadach BasicAuthentication w elemencierequest.header.Authorization określono zmienną, ale nagłówek Authorization nie jest przekazywany w ramach żądania do interfejsu API.<Source>
Diagnostyka
Określ zmienną używaną w elemencie
<Source>w zasadach BasicAuthentication. Te informacje znajdziesz w elemenciefaultstringodpowiedzi na błąd. Na przykład w tym elemenciefaultstring,zmienna użyta w elemencie<Source>torequest.header.Authorization:"faultstring": "Unresolved variable : request.header.Authorization"Sprawdź wszystkie zasady BasicAuthentication w konkretnym serwerze proxy interfejsu API, w którym wystąpił błąd. Może istnieć co najmniej jedna zasada BasicAuthentication. Określ konkretne zasady BasicAuthentication, w których zmienna określona w elemencie
<Source>pasuje do nazwy zmiennej zidentyfikowanej w ciągu znaków błędu (krok 1 powyżej).Na przykład te zasady ustawiają element
<Source>na zmienną o nazwierequest.header.Authorization, która pasuje do elementufaultstring:<?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 wykonywana jest zasada BasicAuthentication.
Jeśli zmienna ma wartość:
- Poza zakresem (niedostępne w określonym procesie, w którym są wykonywane zasady)
- Nie można rozwiązać (nie jest zdefiniowany)
W takim przypadku to jest przyczyną błędu.
W przykładzie zasady BasicAuthentication pokazanym powyżej zmienna
request.header.Authorizationnie została przekazana w ramach żądania. Oznacza to, że żądanie do interfejsu API zostało wysłane bez nagłówka Authorization, jak pokazano poniżej:curl -v "http://org-env.apigee.net/basicauth"
Zmienna użyta w zasadach BasicAuthentication jest niedostępna, więc otrzymujesz kod błędu:
steps.basicauthentication.UnresolvedVariable
Rozdzielczość
Sprawdź, czy zmienna używana w zasadach BasicAuthentication jest zdefiniowana lub przekazywana jako dane wejściowe i dostępna w przepływie, w którym są wykonywane zasady.
Aby rozwiązać problem z przykładowymi zasadami BasicAuthentication omówionymi powyżej, wyślij żądanie do interfejsu API w sposób pokazany poniżej:
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ład błędu 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łowa wejściowa w zasadach BasicAuthentication nie jest prawidłowym ciągiem zakodowanym w formacie Base64. |
| Nagłówek jest nieprawidłowy | Nagłówek zawierający ciąg znaków zakodowany w formacie Base64 przekazywany do zasady BasicAuthentication jest nieprawidłowy. |
Przyczyna: nieprawidłowa zmienna źródłowa
Ten błąd występuje, jeśli zmienna zawierająca ciąg zakodowany w formacie Base64 określony w elemencie <Source> zasady BasicAuthentication nie zawiera prawidłowej wartości.
Ten błąd występuje na przykład wtedy, gdy zmienna określona w elemencie<Source> zasady BasicAuthentication nie zawiera prawidłowego ciągu znaków zakodowanego w formacie Base64.
Diagnostyka
Określ zmienną używaną w elemencie
<Source>w zasadach BasicAuthentication. Te informacje znajdziesz w elemenciefaultstringodpowiedzi na błąd. Na przykład w tym elemenciefaultstring,zmienna użyta 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 konkretnym serwerze proxy interfejsu API, w którym wystąpił błąd. Może istnieć co najmniej jedna zasada BasicAuthentication. Określ konkretne zasady BasicAuthentication, w których zmienna określona w elemencie
<Source>pasuje do nazwy zmiennej zidentyfikowanej w ciągu znaków błędu (krok 1 powyżej).Na przykład te zasady ustawiają element
<Source>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>Jeśli wartość przechowywana w zmiennej określonej w elemencie
<Source>nie jest prawidłowym ciągiem zakodowanym w formacie Base64,to jest to przyczyną błędu.W pokazanych powyżej zasadach BasicAuthentication zmienna
request.header.Authorizationwysłana przez klienta jako nagłówek była nieprawidłowa, jak pokazano poniżej:curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic 23435"
Zmienna
request.header.Authorizationzawiera nieprawidłowy ciąg tekstowy zakodowany w formacie Base64 „23435", dlatego otrzymujesz kod błędu:steps.basicauthentication.InvalidBasicAuthenticationSource
Rozdzielczość
Sprawdź, czy zmienna określona dla elementu <Source> w zasadach BasicAuthentication zawiera prawidłowy ciąg zakodowany w formacie Base64.
Aby rozwiązać problem z przykładowymi zasadami BasicAuthentication omówionymi powyżej, wyślij żądanie do interfejsu API, przekazując w nagłówku Authorization prawidłowy ciąg zakodowany w formacie Base64, jak pokazano poniżej:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Przyczyna: nagłówek jest nieprawidłowy
Ten błąd występuje, jeśli nagłówek przekazany do zasady BasicAuthentication jest nieprawidłowy lub ma nieprawidłową strukturę.
Ten błąd występuje na przykład wtedy, gdy w zasadach BasicAuthentication w elemencierequest.header.Authorization określono zmienną, a nagłówek przekazany w ramach żądania do interfejsu API jest nieprawidłowy lub ma nieprawidłową strukturę.<Source>
Diagnostyka
Określ zmienną używaną w elemencie
<Source>w zasadach BasicAuthentication. Te informacje znajdziesz w elemenciefaultstringodpowiedzi na błąd. Na przykład w tym błędzie zmienna użyta 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 konkretnym serwerze proxy interfejsu API, w którym wystąpił błąd. Może istnieć co najmniej jedna zasada BasicAuthentication. Określ konkretne zasady BasicAuthentication, w których zmienna określona w elemencie
<Source>pasuje do nazwy zmiennej zidentyfikowanej w ciągu znaków błędu (krok 1 powyżej).Na przykład te zasady ustawiają element
<Source>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>Jeśli zmienna jest nagłówkiem i jest nieprawidłowa lub źle sformatowana, tzn. nie ma typu uwierzytelniania lub typ uwierzytelniania nie jest „Basic”, to jest to przyczyną błędu.
Nagłówek Authorization ma taką postać:
Authorization: <Authentication type> <credentials>Nieprawidłowy nagłówek może zostać przekazany 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 uwierzytelniania. Jeśli ten nagłówek zostanie przekazany do zasady BasicAuthentication pokazanej powyżej, otrzymasz kod błędu:
steps.basicauthentication.InvalidBasicAuthenticationSourcePrzykład 2. Typ uwierzytelniania nie jest typu „Basic”:
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 przekazany do zasady BasicAuthentication pokazanej powyżej, otrzymasz kod błędu:
steps.basicauthentication.InvalidBasicAuthenticationSourcePodobnie ten błąd może wystąpić, jeśli w nagłówku autoryzacji używany jest typ uwierzytelniania, np. Bearer, Digest Auth itp.
Rozdzielczość
Sprawdź, czy nagłówek, w którym przekazywane są dane wejściowe do zasady BasicAuthentication, ma typ uwierzytelniania i jest typu „Basic”.
Aby rozwiązać problem z przykładowymi zasadami BasicAuthentication omówionymi powyżej, wyślij żądanie do interfejsu API, przekazując prawidłowy ciąg zakodowany w formacie Base64 z typem uwierzytelniania „Basic” w nagłówku Authorization, jak pokazano poniżej:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"