Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
UnresolvedVariable
Codice di errore
steps.basicauthentication.UnresolvedVariable
Corpo della risposta di 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 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 BasicAuthentication ha una variabile specificata comerequest.header.Authorization nell'elemento<Source>, ma l'intestazione Authorization non viene trasmessa come parte della richiesta API.
Diagnosi
Identifica la variabile utilizzata per l'elemento
<Source>nel criterio BasicAuthentication. Puoi trovare queste informazioni nell'elementofaultstringdella risposta di 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 BasicAuthentication nel proxy API specifico in cui si è verificato l'errore. Potrebbero essere presenti uno o più criteri BasicAuthentication. Identifica la o le policy BasicAuthentication specifiche 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 policy imposta l'elemento
<Source>su una variabile denominatarequest.header.Authorization, che corrisponde a ciò che è presente 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 eseguita la policy BasicAuthentication.
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)
In questo caso, la causa dell'errore è proprio questa.
Nell'esempio di policy BasicAuthentication mostrato sopra, la variabile
request.header.Authorizationnon è stata trasmessa come parte della richiesta. ovvero la richiesta API è stata effettuata senza l'intestazione Authorization, come mostrato di seguito:curl -v "http://$EXTERNAL_IP/basicauth"
dove
$EXTERNAL_IPè l'indirizzo IP del bilanciatore del carico esterno. Questo indirizzo IP è esposto a internet. Per saperne di più, consulta Personalizzare il routing dell'accesso.Poiché la variabile utilizzata nella policy BasicAuthentication non è disponibile, viene visualizzato il codice di errore:
steps.basicauthentication.UnresolvedVariable
Risoluzione
Assicurati che la variabile utilizzata nel criterio BasicAuthentication sia definita o trasmessa come input e disponibile nel flusso in cui viene eseguito il criterio.
Per risolvere il problema relativo alla policy BasicAuthentication di esempio descritta sopra, invia una richiesta API come mostrato di seguito:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
dove $EXTERNAL_IP è l'indirizzo IP del bilanciatore del carico esterno.
Questo indirizzo IP è esposto a internet. Per saperne di più, consulta
Personalizzare il routing dell'accesso.
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"
}
}
}
Esempio di errore Messaggio di errore
{
"fault": {
"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Cause possibili
Le possibili cause di questo errore sono:
| Causa | Descrizione |
|---|---|
| Variabile di origine non valida | La variabile di origine dell'input per il criterio BasicAuthentication non è una stringa con codifica Base64 valida. |
| L'intestazione non è formattata correttamente | L'intestazione contenente la stringa con codifica Base64 trasmessa al criterio BasicAuthentication non è formattata correttamente. |
Causa: variabile di origine non valida
Questo errore si verifica se la variabile contenente la stringa con codifica 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 BasicAuthentication 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'elementofaultstringdella risposta di 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 le policy di autenticazione di base specifiche 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 policy imposta l'elemento
<Source>su una variabile denominatarequest.header.Authorization, che corrisponde a ciò che è presente 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 con codifica Base64 valida,questo è il motivo dell'errore.Nell'esempio di policy BasicAuthentication mostrato sopra, la variabile
request.header.Authorizationinviata dal client come intestazione non era valida, come mostrato di seguito:curl -v "http://$EXTERNAL_IP /basicauth" -H "Authorization: Basic 23435"
dove
$EXTERNAL_IPè l'indirizzo IP del bilanciatore del carico esterno. Questo indirizzo IP è esposto a internet. Per saperne di più, consulta Personalizzare il routing dell'accesso.Poiché la variabile
request.header.Authorizationha 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 con codifica Base64 valida.
Per risolvere il problema con la policy BasicAuthentication di esempio descritta sopra, invia una richiesta API passando una stringa con codifica Base64 valida nell'intestazione Authorization, come mostrato di seguito:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
dove $EXTERNAL_IP è l'indirizzo IP del bilanciatore del carico esterno.
Questo indirizzo IP è esposto a internet. Per saperne di più, consulta
Personalizzare il routing dell'accesso.
Causa: l'intestazione non è valida/è formattata in modo errato
Questo errore si verifica se l'intestazione passata al criterio BasicAuthentication non è valida o è formattata in modo errato.
Ad esempio, questo errore si verifica se il criterio BasicAuthentication ha una variabile specificata comerequest.header.Authorization nell'elemento<Source> e l'intestazione passata come parte della richiesta API è errata/non valida.
Diagnosi
Identifica la variabile utilizzata per l'elemento
<Source>nel criterio BasicAuthentication. Puoi trovare queste informazioni nell'elementofaultstringdella 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"Esamina tutti i criteri BasicAuthentication nel proxy API specifico in cui si è verificato l'errore. Potrebbero essere presenti uno o più criteri BasicAuthentication. Identifica le policy di autenticazione di base specifiche 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 policy imposta l'elemento
<Source>su una variabile denominatarequest.header.Authorization, che corrisponde a ciò che è presente 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 non è valida o ha un formato non valido, ad esempio non ha il tipo di autenticazione o se il tipo di autenticazione non è "Basic", questo è il motivo dell'errore.
L'intestazione Authorization ha questo formato:
Authorization: <Authentication type> <credentials>Un'intestazione non valida può essere trasmessa al criterio BasicAuthentication in due modi:
Esempio 1: nessun tipo di autenticazione nell'intestazione:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: YWthc2g6MTIz"
dove
$EXTERNAL_IPè l'indirizzo IP del bilanciatore del carico esterno. Questo indirizzo IP è esposto a internet. Per saperne di più, consulta Personalizzare il routing dell'accesso.Nell'esempio precedente, l'intestazione Authorization non contiene il tipo di autenticazione. Se questa intestazione viene trasmessa al criterio BasicAuthentication mostrato sopra, ricevi il codice di errore:
steps.basicauthentication.InvalidBasicAuthenticationSourceEsempio 2: il tipo di autenticazione non è "Basic":
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
dove
$EXTERNAL_IPè l'indirizzo IP del bilanciatore del carico esterno. Questo indirizzo IP è esposto a internet. Per saperne di più, consulta Personalizzare il routing dell'accesso.Nell'esempio precedente, l'intestazione Authorization non ha il tipo di autenticazione "Basic". Se questo valore viene passato al criterio BasicAuthentication mostrato sopra, ricevi il codice di errore:
steps.basicauthentication.InvalidBasicAuthenticationSourceAllo stesso modo, 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 di autenticazione e sia di tipo "Basic".
Per risolvere il problema relativo alla policy BasicAuthentication di esempio descritta in precedenza, invia una richiesta API passando una stringa codificata in base64 valida con il tipo di autenticazione "Basic" nell'intestazione Authorization, come mostrato di seguito:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
dove $EXTERNAL_IP è l'indirizzo IP del bilanciatore del carico esterno.
Questo indirizzo IP è esposto a internet. Per saperne di più, consulta
Personalizzare il routing dell'accesso.