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

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

UnresolvedVariable

Kod błędu

steps.basicauthentication.UnresolvedVariable

Treść odpowiedzi o błędzie

{
    "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 ma jedną z tych wartości:

  • Poza zakresem (niedostępne w konkretnym procesie, w którym jest wykonywana zasada)
  • Nie można rozwiązać (nie określono)

Ten błąd występuje na przykład wtedy, gdy zasada podstawowego uwierzytelniania zawiera zmienną określoną jako request.header.Authorization w elemencie <Source>, ale nagłówek autoryzacji nie jest przekazywany w żądaniu do interfejsu API.

Diagnostyka

  1. Zidentyfikuj zmienną używaną dla elementu <Source> w zasadzie uwierzytelniania podstawowego. Te informacje znajdziesz w elemencie faultstring odpowiedzi o błędzie. Na przykład w elemencie faultstring, zmienna używana dla elementu <Source> to request.header.Authorization:

    "faultstring": "Unresolved variable : request.header.Authorization"
    
  2. Sprawdź wszystkie zasady uwierzytelniania podstawowego na konkretnym serwerze proxy interfejsu API, gdzie wystąpił błąd. Może istnieć co najmniej jedna zasada uwierzytelniania podstawowego. Wskaż 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 w elemencie <Source> zmienną o nazwie request.header.Authorization, która odpowiada zawartości pliku 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 procesie, w którym jest wykonywana zasada uwierzytelniania podstawowego.

  4. Jeśli zmienna to:

    1. Poza zakresem (niedostępne w konkretnym procesie, w którym jest wykonywana zasada)
    2. Nie można rozwiązać (nie określono)

    To jest przyczyna błędu.

    W przedstawionej powyżej przykładowej zasadzie podstawowego uwierzytelniania zmienna request.header.Authorization nie została przekazana w żądaniu. 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"

    Ponieważ zmienna używana w zasadzie uwierzytelniania podstawowego jest niedostępna, pojawia się kod błędu:

    steps.basicauthentication.UnresolvedVariable
    

Rozdzielczość

Upewnij się, że zmienna używana w zasadzie podstawowego uwierzytelniania jest zdefiniowana lub przekazana jako dane wejściowe i jest dostępna w procesie, w którym jest wykonywana.

Aby rozwiązać problem z przykładową zasadą podstawowego uwierzytelniania omówioną 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 o błędzie

{
    "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 Wejściowa zmienna źródła uwierzytelniania zasady podstawowego uwierzytelniania nie jest prawidłowym ciągiem zakodowanym w standardzie Base64.
Nieprawidłowy format nagłówka Nagłówek zawierający ciąg zakodowany w standardzie Base64 przekazany 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 podstawowego nie zawiera prawidłowej wartości.

Ten błąd występuje na przykład wtedy, gdy zmienna określona w elemencie <Source> zasad uwierzytelniania podstawowego nie zawiera prawidłowego ciągu zakodowanego w standardzie Base64.

Diagnostyka

  1. Zidentyfikuj zmienną używaną dla elementu <Source> w zasadzie uwierzytelniania podstawowego. Te informacje znajdziesz w elemencie faultstring odpowiedzi o błędzie. Na przykład w elemencie faultstring, zmienna używana dla elementu <Source> to request.header.Authorization:

    "faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
    
  2. Sprawdź wszystkie zasady uwierzytelniania podstawowego na konkretnym serwerze proxy interfejsu API, gdzie wystąpił błąd. Może istnieć co najmniej jedna zasada uwierzytelniania podstawowego. Wskaż 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 w elemencie <Source> zmienną o nazwie request.header.Authorization, która odpowiada zawartości pliku 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 standardzie Base64, to jest przyczyną błędu.

    W przykładowej zasadzie uwierzytelniania podstawowego opisanego powyżej zmienna request.header.Authorization wysł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.Authorization zawiera nieprawidłowy ciąg znaków zakodowany w standardzie Base64, więc pojawia się kod błędu:23435"

    steps.basicauthentication.InvalidBasicAuthenticationSource

Rozdzielczość

Sprawdź, czy zmienna określona dla elementu <Source> w zasadzie uwierzytelniania podstawowego zawiera prawidłowy ciąg zakodowany w standardzie Base64.

Aby rozwiązać problem z przykładową zasadą podstawowego uwierzytelniania omówioną powyżej, wyślij żądanie do interfejsu API, przekazując w nagłówku Authorization prawidłowy ciąg zakodowany w standardzie Base64, jak pokazano poniżej:

curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"

Przyczyna: nagłówek jest nieprawidłowy lub nieprawidłowy

Ten błąd występuje, jeśli nagłówek przekazywany do zasad uwierzytelniania podstawowego jest uszkodzony lub nieprawidłowy.

Ten błąd występuje na przykład wtedy, gdy zasada BasicAuth zawiera zmienną określoną jako request.header.Authorization w elemencie <Source>, a nagłówek przekazany w ramach żądania do interfejsu API ma nieprawidłowy format lub jest nieprawidłowy.

Diagnostyka

  1. Zidentyfikuj zmienną używaną dla elementu <Source> w zasadzie uwierzytelniania podstawowego. Te informacje znajdziesz w elemencie faultstring odpowiedzi o błędzie. Na przykład w poniższym błędzie zmienna używana dla elementu <Source> to request.header.Authorization:

    "faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
    
  2. Sprawdź wszystkie zasady uwierzytelniania podstawowego na konkretnym serwerze proxy interfejsu API, gdzie wystąpił błąd. Może istnieć co najmniej jedna zasada uwierzytelniania podstawowego. Wskaż 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 w elemencie <Source> zmienną o nazwie request.header.Authorization, która odpowiada zawartości pliku 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, a jej format jest nieprawidłowy lub ma nieprawidłowy format, czyli nie ma typu uwierzytelniania lub typ uwierzytelniania jest inny niż „Podstawowe”, to jest przyczyną błędu.

    Nagłówek Authorization ma następujący format:

    Authorization: <Authentication type> <credentials>
    

    Nieprawidłowy nagłówek może zostać przekazany do zasady uwierzytelniania podstawowego 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 Autoryzacja nie ma wartości Typ uwierzytelniania. Jeśli ten nagłówek zostanie przekazany do zasady uwierzytelniania podstawowego widocznej powyżej, zostanie wyświetlony 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 Autoryzacja nie ma typu uwierzytelniania „Podstawowe”. Jeśli zostanie przekazane do zasady uwierzytelniania podstawowego widocznej powyżej, otrzymasz kod błędu:

    steps.basicauthentication.InvalidBasicAuthenticationSource
    

    Ten błąd może również wystąpić, jeśli w nagłówku Authorization (Autoryzacja) typ uwierzytelniania, taki jak okaziciel, Autoryzacja Digest Auth itp.

Rozdzielczość

Upewnij się, że nagłówek, w którym przekazywane są dane wejściowe zasady uwierzytelniania podstawowego, ma typ uwierzytelniania i ma typ „Podstawowe”.

Aby rozwiązać problem z przykładową zasadą uwierzytelniania podstawowego omówioną powyżej, wyślij żądanie do interfejsu API, przekazując w nagłówku Authorization prawidłowy ciąg zakodowany w standardzie Base64 z typem uwierzytelniania „podstawowego”, jak pokazano poniżej:

curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"