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

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

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

    "faultstring": "Unresolved variable : request.header.Authorization"
    
  2. 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 nazwie request.header.Authorization, która odpowiada zawartości 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 jest wykonywana zasada uwierzytelniania Basic.

  4. Jeśli zmienna to:

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

  1. Określ zmienną używaną w elemencie <Source> w zasadzie BasicAuthentication. Te informacje znajdziesz w elemencie faultstring odpowiedzi na błąd. Na przykład w tym faultstring, 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"
    
  2. 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 nazwie request.header.Authorization, która odpowiada zawartości 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 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.Authorizationzawiera 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

  1. Określ zmienną używaną w elemencie <Source> w zasadzie BasicAuthentication. Te informacje znajdziesz w elemencie faultstring odpowiedzi na błąd. Na przykład w tym błędzie zmienna używana 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 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 nazwie request.header.Authorization, która odpowiada zawartości 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 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"