Risoluzione degli errori di runtime dei criteri di autenticazione di base

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

UnresolvedVariable

Codice di errore

steps.basicauthentication.UnresolvedVariable

Corpo della risposta all'errore

{
    "fault": {
        "faultstring": "Unresolved variable : [variable_name]",
        "detail": {
            "errorcode": "steps.basicauthentication.UnresolvedVariable"
        }
    }
}

Esempio di messaggio di errore

{
    "fault": {
        "faultstring": "Unresolved variable : request.header.Authorization",
        "detail": {
            "errorcode": "steps.basicauthentication.UnresolvedVariable"
        }
    }
}

Causa

Questo errore si verifica se la variabile contenente la stringa codificata Base64 specificata nell'elemento <Source> del criterio BasicAutenticazione è:

  • Fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio)
  • Non può essere risolto (non è definito)

Ad esempio, questo errore si verifica se il criterio BasicAutenticazione ha una variabile specificata come request.header.Authorization nell'elemento <Source>, ma l'intestazione Authorization non viene trasmessa come parte della richiesta API.

Diagnostica

  1. Identifica la variabile utilizzata per l'elemento <Source> nel criterio BasicAutenticazione. Puoi trovare queste informazioni nell'elemento faultstring della risposta di errore. Ad esempio, nel seguente faultstring,, la variabile utilizzata per l'elemento <Source> è request.header.Authorization:

    "faultstring": "Unresolved variable : request.header.Authorization"
    
  2. Esamina tutti i criteri BasicAutenticazione nel proxy API specifico in cui si è verificato l'errore. Potrebbero essere presenti uno o più criteri BasicAutenticazione. Identifica il criterio o i criteri BasicAutenticazione specifici in cui la variabile specificata nell'elemento <Source> corrisponde al nome della variabile identificato nella stringa di errore (passaggio 1 riportato sopra).

    Ad esempio, il seguente criterio imposta l'elemento <Source> su una variabile denominata request.header.Authorization, che corrisponde al contenuto della colonna 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. Determina se la variabile è definita e disponibile nel flusso in cui viene eseguito il criterio BasicAutenticazione.

  4. Se la variabile è:

    1. Fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio)
    2. Non può essere risolto (non è definito)

    Questa è la causa dell'errore.

    Nel criterio Basic Authentication di esempio mostrato sopra, la variabile request.header.Authorization non è stata trasmessa come parte della richiesta. Ciò significa che la richiesta API è stata effettuata senza l'intestazione Authorization, come mostrato di seguito:

    curl -v "http://org-env.apigee.net/basicauth"

    Poiché la variabile utilizzata nel criterio BasicAutenticazione non è disponibile, riceverai il seguente codice di errore:

    steps.basicauthentication.UnresolvedVariable
    

Risoluzione

Assicurati che la variabile utilizzata nel criterio BasicAutenticazione venga definita o passata come input e disponibile nel flusso in cui viene eseguito il criterio.

Per risolvere il problema relativo al criterio Basic Authentication di esempio discusso sopra, effettua una richiesta API come mostrato di seguito:

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

InvalidBasicAuthenticationSource

Codice di errore

steps.basicauthentication.InvalidBasicAuthenticationSource

Corpo della risposta all'errore

{
    "fault": {
        "faultstring": "Source variable : [variable_name] for basic authentication decode policy is not valid",
        "detail": {
            "errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
        }
    }
}

Esempio di messaggio di errore di errore

{
    "fault": {
        "faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid",
        "detail": {
            "errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
        }
    }
}

Possibili cause

Le possibili cause di questo errore sono:

Causa Descrizione
Variabile di origine non valida La variabile dell'origine di input al criterio BasicAutenticazione non è una stringa codificata Base64 valida.
Il formato dell'intestazione non è corretto L'intestazione contenente la stringa codificata Base64 passata al criterio BasicAutenticazione non è valida.

Causa: variabile di origine non valida

Questo errore si verifica se la variabile contenente la stringa codificata Base64 specificata nell'elemento <Source> del criterio BasicAutenticazione non contiene un valore valido.

Ad esempio, questo errore si verifica se la variabile specificata nell'elemento <Source> del criterio BasicAutenticazione non ha una stringa codificata Base64 valida.

Diagnostica

  1. Identifica la variabile utilizzata per l'elemento <Source> nel criterio BasicAutenticazione. Puoi trovare queste informazioni nell'elemento faultstring della risposta di errore. Ad esempio, nel seguente faultstring,, la variabile utilizzata per l'elemento <Source> è request.header.Authorization:

    "faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
    
  2. Esamina tutti i criteri BasicAutenticazione nel proxy API specifico in cui si è verificato l'errore. Potrebbero essere presenti uno o più criteri BasicAutenticazione. Identifica i criteri BasicAutenticazione specifici in cui la variabile specificata nell'elemento <Source> corrisponde al nome della variabile identificato nella stringa di errore (passaggio 1 riportato sopra).

    Ad esempio, il seguente criterio imposta l'elemento <Source> su una variabile denominata request.header.Authorization, che corrisponde al contenuto della colonna 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. Se il valore archiviato nella variabile specificata nell'elemento <Source> non è una stringa valida con codifica Base64, è la causa dell'errore.

    Nell'esempio di criterio BasicAutenticazione mostrato sopra, la variabile request.header.Authorizationinviata dal client come intestazione non era valida, come mostrato di seguito:

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

    Poiché la variabile request.header.Authorizationha una stringa "23435" codificata Base64 non valida, riceverai questo codice di errore:

    steps.basicauthentication.InvalidBasicAuthenticationSource

Risoluzione

Assicurati che la variabile specificata per l'elemento <Source> nel criterio BasicAutenticazione abbia una stringa codificata Base64 valida.

Per risolvere il problema relativo al criterio Basic Authentication di esempio discusso sopra, effettua una richiesta API passando una stringa valida codificata in Base64 nell'intestazione Authorization, come mostrato di seguito:

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

Causa: il formato dell'intestazione non è corretto/non è valido

Questo errore si verifica se l'intestazione trasmessa al criterio BasicAutenticazione non è valida o non è valida.

Ad esempio, questo errore si verifica se il criterio BasicAutenticazione ha una variabile specificata come request.header.Authorization nell'elemento <Source> e l'intestazione trasmessa durante la richiesta API non è valida o non è valida.

Diagnostica

  1. Identifica la variabile utilizzata per l'elemento <Source> nel criterio BasicAutenticazione. Puoi trovare queste informazioni nell'elemento faultstring della risposta di errore. Ad esempio, nel seguente errore, la variabile utilizzata per l'elemento <Source> è request.header.Authorization:

    "faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
    
  2. Esamina tutti i criteri BasicAutenticazione nel proxy API specifico in cui si è verificato l'errore. Potrebbero essere presenti uno o più criteri BasicAutenticazione. Identifica i criteri BasicAutenticazione specifici in cui la variabile specificata nell'elemento <Source> corrisponde al nome della variabile identificato nella stringa di errore (passaggio 1 riportato sopra).

    Ad esempio, il seguente criterio imposta l'elemento <Source> su una variabile denominata request.header.Authorization, che corrisponde al contenuto della colonna 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. Se la variabile è un'intestazione e non è nel formato corretto o non è valida, ovvero non ha il tipo di autenticazione o se il tipo di autenticazione non è "Base", è questo la causa dell'errore.

    L'intestazione Authorization ha il seguente formato:

    Authorization: <Authentication type> <credentials>
    

    Un'intestazione non corretta può essere trasmessa al criterio BasicAutenticazione in due modi:

    Esempio 1: nessun tipo di autenticazione nell'intestazione:

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

    Nell'esempio precedente, l'intestazione Authorization non ha il tipo Authentication. Se questa intestazione viene passata al criterio BasicAutenticazione mostrato sopra, riceverai il codice di errore:

    steps.basicauthentication.InvalidBasicAuthenticationSource
    

    Esempio 2: il tipo di autenticazione non è di tipo "Base":

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

    Nell'esempio precedente, l'intestazione Authorization non ha il tipo di autenticazione "Base". Se questo viene passato al criterio BasicAutenticazione mostrato sopra, riceverai il codice di errore:

    steps.basicauthentication.InvalidBasicAuthenticationSource
    

    Analogamente, questo errore può verificarsi anche se nell'intestazione Autorizzazione viene utilizzato il tipo di autenticazione, ad esempio connessione, autorizzazione digest e così via.

Risoluzione

Assicurati che l'intestazione in cui viene passato l'input del criterio BasicAutenticazione abbia il tipo di autenticazione e che sia di tipo "Base".

Per risolvere il problema relativo al criterio Basic Authentication di esempio discusso sopra, effettua una richiesta API passando una stringa valida codificata in Base64 con tipo di autenticazione "Base" nell'intestazione Authorization, come mostrato di seguito:

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