Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di
Apigee X. informazioni
UnresolvedVariable
Codice di errore
steps.basicauthentication.UnresolvedVariable
Corpo della risposta di errore
{
"fault": {
"faultstring": "Unresolved variable : [variable_name]",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Messaggio di errore di esempio
{
"fault": {
"faultstring": "Unresolved variable : request.header.Authorization",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Causa
Questo errore si verifica se la variabile contenente la stringa con codifica base64 specificata nell'elemento <Source>
del criterio BasicAuthentication è:
- Al di fuori dell'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 di autenticazione di base ha una variabile specificata come request.header.Authorization
nell'elemento <Source>
, ma l'intestazione Authorization non viene passata nell'ambito della richiesta dell'API.
Diagnosi
Identifica la variabile utilizzata per l'elemento
<Source>
nel criterio BasicAuthentication. Puoi trovare queste informazioni nell'elementofaultstring
della risposta all'errore. Ad esempio, nel seguentefaultstring,
la variabile utilizzata per l'elemento<Source>
èrequest.header.Authorization
:"faultstring": "Unresolved variable : request.header.Authorization"
Esamina tutti i criteri di autenticazione di base nel proxy API specifico in cui si è verificato l'errore. Potrebbero essere presenti uno o più criteri BasicAuthentication. Identifica il criterio o i criteri BasicAuthentication specifici in cui la variabile specificata nell'elemento
<Source>
corrisponde al nome della variabile identificato nella stringa di errore (passaggio 1 sopra).Ad esempio, il seguente criterio consente di impostare l'elemento
<Source>
su una variabile denominatarequest.header.Authorization
, che corrisponde al contenuto infaultstring
:<?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>
Determina se la variabile è definita e disponibile nel flusso in cui viene eseguito il criterio di autenticazione di base.
Se la variabile è:
- Al di fuori dell'ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio)
- Non può essere risolto (non è definito)
Questa è la causa dell'errore.
Nel criterio di autenticazione di base di esempio mostrato sopra, la variabile
request.header.Authorization
non è stata passata nell'ambito della richiesta. Ciò significa che la richiesta API è stata effettuata senza l'intestazione Autorizzazione, come illustrato di seguito:curl -v "http://org-env.apigee.net/basicauth"
Poiché la variabile utilizzata nel criterio BasicAuthentication non è disponibile, ricevi il codice di errore:
steps.basicauthentication.UnresolvedVariable
Risoluzione
Assicurati che la variabile utilizzata nel criterio BasicAuthentication sia definita o passata come input e sia disponibile nel flusso in cui viene eseguito il criterio.
Per risolvere il problema relativo al criterio di autenticazione di base di esempio discusso sopra, invia 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 di errore
{
"fault": {
"faultstring": "Source variable : [variable_name] for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Messaggio di errore Esempio 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 di origine di input per il criterio di autenticazione di base non è una stringa con codifica Base64 valida. |
Formato dell'intestazione non corretto | L'intestazione contenente la stringa con codifica Base64 passata al criterio di autenticazione di base non è formattata correttamente. |
Causa: variabile di origine non valida
Questo errore si verifica se la variabile contenente la stringa codificata Base64 specificata nell'elemento <Source>
del criterio BasicAuthentication non contiene un valore valido.
Ad esempio, questo errore si verifica se la variabile specificata nell'elemento <Source>
del criterio di autenticazione di base non ha una stringa con codifica base64 valida.
Diagnosi
Identifica la variabile utilizzata per l'elemento
<Source>
nel criterio BasicAuthentication. Puoi trovare queste informazioni nell'elementofaultstring
della risposta all'errore. Ad esempio, nel seguentefaultstring,
la variabile utilizzata per l'elemento<Source>
èrequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Esamina tutti i criteri BasicAuthentication nel proxy API specifico in cui si è verificato l'errore. Potrebbero essere presenti uno o più criteri BasicAuthentication. Identifica i criteri BasicAuthentication specifici in cui la variabile specificata nell'elemento
<Source>
corrisponde al nome della variabile identificato nella stringa di errore (passaggio 1 sopra).Ad esempio, la seguente norma imposta l'elemento
<Source>
su una variabile denominatarequest.header.Authorization
, che corrisponde a quanto contenuto infaultstring
:<?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>
Se il valore memorizzato nella variabile specificata nell'elemento
<Source>
non è una stringa codificata Base64 valida,è la causa dell'errore.
Nel criterio di autenticazione di base di esempio mostrato sopra, la variabile
request.header.Authorization
inviata 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.Authorization
ha una stringa con codifica base64 non valida "23435"
, ricevi il codice di errore:steps.basicauthentication.InvalidBasicAuthenticationSource
Risoluzione
Assicurati che la variabile specificata per l'elemento <Source>
nel criterio BasicAuthentication abbia una stringa codificata Base64 valida.
Per risolvere il problema relativo al criterio di autenticazione di base di esempio discusso sopra, effettua una richiesta API passando una stringa con codifica Base64 valida nell'intestazione Authorization, come mostrato di seguito:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Causa: l'intestazione non è formattata correttamente/non è valida
Questo errore si verifica se l'intestazione passata al criterio di autenticazione di base non è formattata correttamente o non è valida.
Ad esempio, questo errore si verifica se il criterio di autenticazione di base ha una variabile specificata come request.header.Authorization
nell'elemento <Source>
e l'intestazione passata nell'ambito della richiesta dell'API non è formattata correttamente/non è valida.
Diagnosi
Identifica la variabile utilizzata per l'elemento
<Source>
nel criterio BasicAuthentication. Puoi trovare queste informazioni nell'elementofaultstring
della risposta all'errore. Ad esempio, nell'errore seguente, la variabile utilizzata per l'elemento<Source>
èrequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Esamina tutti i criteri BasicAuthentication nel proxy API specifico in cui si è verificato l'errore. Potrebbero essere presenti uno o più criteri BasicAuthentication. Identifica gli specifici criteri BasicAuthentication in cui la variabile specificata nell'elemento
<Source>
corrisponde al nome della variabile identificato nella stringa di errore (passaggio 1 sopra).Ad esempio, la seguente norma imposta l'elemento
<Source>
su una variabile denominatarequest.header.Authorization
, che corrisponde a quanto contenuto infaultstring
:<?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>
Se la variabile è un'intestazione e ha un formato non valido o non è valida, ad esempio non ha il tipo di autenticazione o se il tipo di autenticazione non è "Di base", è questa la causa dell'errore.
L'intestazione Authorization ha questo formato:
Authorization: <Authentication type> <credentials>
Un'intestazione non corretta può essere passata al criterio BasicAuthentication 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 di autenticazione. Se questa intestazione viene passata al criterio BasicAuthentication mostrato sopra, viene visualizzato 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 riportato sopra, l'intestazione Authorization non ha il tipo di autenticazione "Basic". Se questo valore viene passato al criterio BasicAuthentication mostrato sopra, viene visualizzato il codice di errore:
steps.basicauthentication.InvalidBasicAuthenticationSource
Analogamente, questo errore può verificarsi anche se nell'intestazione Authorization viene utilizzato il tipo di autenticazione, ad esempio Bearer, Digest Auth e così via.
Risoluzione
Assicurati che l'intestazione in cui viene passato l'input al criterio BasicAuthentication abbia il tipo Authentication e sia di tipo "Basic".
Per risolvere il problema relativo al criterio di autenticazione di base di esempio discusso sopra, effettua una richiesta API passando una stringa con codifica Base64 valida con il tipo di autenticazione "Di base" nell'intestazione Authorization, come mostrato di seguito:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"