Rozwiązywanie problemów związanych z błędem zasad uwierzytelniania podstawowego

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

  1. Określ zmienną używaną w elemencie <Source> w zasadach BasicAuthentication. Te informacje znajdziesz w elemencie faultstring odpowiedzi na błąd. Na przykład w tym elemencie faultstring, zmienna użyta w elemencie <Source> to request.header.Authorization:

    "faultstring": "Unresolved variable : request.header.Authorization"
    
  2. 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 nazwie request.header.Authorization, która pasuje do elementu faultstring:

    <?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>
    
  3. Określ, czy zmienna jest zdefiniowana i dostępna w przepływie, w którym wykonywana jest zasada BasicAuthentication.

  4. Jeśli zmienna ma wartość:

    1. Poza zakresem (niedostępne w określonym procesie, w którym są wykonywane zasady)
    2. 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

  1. Określ zmienną używaną w elemencie <Source> w zasadach BasicAuthentication. Te informacje znajdziesz w elemencie faultstring odpowiedzi na błąd. Na przykład w tym elemencie faultstring, zmienna użyta w elemencie <Source> to request.header.Authorization:

    "faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
    
  2. 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 nazwie request.header.Authorization, która odpowiada wartości w elemencie faultstring:

    <?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>
    
  3. 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

  1. Określ zmienną używaną w elemencie <Source> w zasadach BasicAuthentication. Te informacje znajdziesz w elemencie faultstring odpowiedzi na błąd. Na przykład w tym błędzie zmienna użyta w elemencie <Source> to request.header.Authorization:

    "faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
    
  2. 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 nazwie request.header.Authorization, która odpowiada wartości w elemencie faultstring:

    <?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>
    
  3. 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.InvalidBasicAuthenticationSource
    

    Przykł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.InvalidBasicAuthenticationSource
    

    Podobnie 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"