Estás consultando la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
UnresolvedVariable
Código de error
steps.basicauthentication.UnresolvedVariable
Cuerpo de respuesta de error
{
"fault": {
"faultstring": "Unresolved variable : [variable_name]",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Ejemplo de mensaje de error
{
"fault": {
"faultstring": "Unresolved variable : request.header.Authorization",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Causa
Este error se produce si la variable que contiene la cadena codificada en base64 especificada en el elemento <Source>
de la política BasicAuthentication es:
- Fuera del ámbito (no disponible en el flujo específico en el que se está ejecutando la política)
- No se puede resolver (no está definido)
Por ejemplo, este error se produce si la política BasicAuthentication tiene una variable especificada comorequest.header.Authorization
en el elemento<Source>
, pero el encabezado Authorization no se incluye en la solicitud de la API.
Diagnóstico
Identifica la variable que se usa en el elemento
<Source>
de la política BasicAuthentication. Puede encontrar esta información en el elementofaultstring
de la respuesta de error. Por ejemplo, en el siguientefaultstring,
, la variable utilizada para el elemento<Source>
esrequest.header.Authorization
:"faultstring": "Unresolved variable : request.header.Authorization"
Examina todas las políticas BasicAuthentication del proxy de API específico en el que se ha producido el error. Puede haber una o varias políticas BasicAuthentication. Identifica la política o las políticas de BasicAuthentication específicas en las que la variable especificada en el elemento
<Source>
coincide con el nombre de la variable identificada en la cadena de error (paso 1 anterior).Por ejemplo, la siguiente política asigna al elemento
<Source>
una variable llamadarequest.header.Authorization
, que coincide con lo que hay enfaultstring
:<?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 si la variable está definida y disponible en el flujo en el que se está ejecutando la política BasicAuthentication.
Si la variable es:
- Fuera del ámbito (no disponible en el flujo específico en el que se está ejecutando la política)
- No se puede resolver (no está definido)
Entonces, esa es la causa del error.
En el ejemplo de política BasicAuthentication que se muestra arriba, la variable
request.header.Authorization
no se ha enviado como parte de la solicitud. Es decir, la solicitud de API se ha realizado sin el encabezado Authorization, como se muestra a continuación:curl -v "http://$EXTERNAL_IP/basicauth"
Donde
$EXTERNAL_IP
es la dirección IP del balanceador de carga externo. Esta dirección IP está expuesta a Internet. Para obtener más información, consulta Personalizar el enrutamiento de acceso.Como la variable usada en la política BasicAuthentication no está disponible, recibes el código de error:
steps.basicauthentication.UnresolvedVariable
Resolución
Asegúrate de que la variable utilizada en la política BasicAuthentication se ha definido o se ha transferido como entrada y está disponible en el flujo en el que se está ejecutando la política.
Para solucionar el problema con la política BasicAuthentication de ejemplo que hemos comentado anteriormente, haz una solicitud a la API como se muestra a continuación:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Donde $EXTERNAL_IP
es la dirección IP del balanceador de carga externo.
Esta dirección IP está expuesta a Internet. Para obtener más información, consulta Personalizar el enrutamiento de acceso.
InvalidBasicAuthenticationSource
Código de error
steps.basicauthentication.InvalidBasicAuthenticationSource
Cuerpo de respuesta de error
{
"fault": {
"faultstring": "Source variable : [variable_name] for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Mensaje de error de ejemplo de error
{
"fault": {
"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Posibles motivos
Estas son las posibles causas de este error:
Causa | Descripción |
---|---|
Variable de origen no válida | La variable de origen de entrada de la política BasicAuthentication no es una cadena codificada en Base64 válida. |
El encabezado tiene un formato incorrecto | El encabezado que contiene la cadena codificada en Base64 que se ha transferido a la política BasicAuthentication tiene un formato incorrecto. |
Causa: variable de origen no válida
Este error se produce si la variable que contiene la cadena codificada en Base64 especificada en el elemento <Source>
de la política BasicAuthentication no contiene un valor válido.
Por ejemplo, este error se produce si la variable especificada en el elemento <Source>
de la política BasicAuthentication no tiene una cadena codificada en Base64 válida.
Diagnóstico
Identifica la variable que se usa en el elemento
<Source>
de la política BasicAuthentication. Puede encontrar esta información en el elementofaultstring
de la respuesta de error. Por ejemplo, en el siguientefaultstring,
, la variable utilizada para el elemento<Source>
esrequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Examina todas las políticas BasicAuthentication del proxy de API específico en el que se ha producido el error. Puede haber una o varias políticas BasicAuthentication. Identifica las políticas de BasicAuthentication específicas en las que la variable especificada en el elemento
<Source>
coincide con el nombre de la variable identificada en la cadena de error (paso 1 anterior).Por ejemplo, la siguiente política asigna al elemento
<Source>
una variable llamadarequest.header.Authorization
, que coincide con lo que hay enfaultstring
:<?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>
Si el valor almacenado en la variable especificada en el elemento
<Source>
no es una cadena codificada en Base64 válida,esa es la causa del error.
En el ejemplo de la política BasicAuthentication que se muestra arriba, la variable
request.header.Authorization
que ha enviado el cliente como encabezado no era válida, tal como se muestra a continuación:curl -v "http://$EXTERNAL_IP /basicauth" -H "Authorization: Basic 23435"
Donde
$EXTERNAL_IP
es la dirección IP del balanceador de carga externo. Esta dirección IP está expuesta a Internet. Para obtener más información, consulta Personalizar el enrutamiento de acceso.Como la variable
request.header.Authorization
tiene una cadena codificada en Base64 no válida ("23435"
"), se muestra el siguiente código de error:steps.basicauthentication.InvalidBasicAuthenticationSource
Resolución
Asegúrate de que la variable especificada para el elemento <Source>
de la política BasicAuthentication tenga una cadena codificada en Base64 válida.
Para solucionar el problema con la política BasicAuthentication de ejemplo que se ha descrito anteriormente, haz una solicitud de API pasando una cadena codificada en Base64 válida en el encabezado Authorization, como se muestra a continuación:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Donde $EXTERNAL_IP
es la dirección IP del balanceador de carga externo.
Esta dirección IP está expuesta a Internet. Para obtener más información, consulta Personalizar el enrutamiento de acceso.
Causa: el encabezado tiene un formato incorrecto o no es válido
Este error se produce si el encabezado que se ha enviado a la política BasicAuthentication tiene un formato incorrecto o no es válido.
Por ejemplo, este error se produce si la política BasicAuthentication tiene una variable especificada como request.header.Authorization
en el elemento <Source>
y el encabezado que se ha enviado como parte de la solicitud de la API tiene un formato incorrecto o no es válido.
Diagnóstico
Identifica la variable que se usa en el elemento
<Source>
de la política BasicAuthentication. Puede encontrar esta información en el elementofaultstring
de la respuesta de error. Por ejemplo, en el siguiente error, la variable utilizada para el elemento<Source>
esrequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Examina todas las políticas BasicAuthentication del proxy de API específico en el que se ha producido el error. Puede haber una o varias políticas BasicAuthentication. Identifica las políticas de BasicAuthentication específicas en las que la variable especificada en el elemento
<Source>
coincide con el nombre de la variable identificada en la cadena de error (paso 1 anterior).Por ejemplo, la siguiente política asigna al elemento
<Source>
una variable llamadarequest.header.Authorization
, que coincide con lo que hay enfaultstring
:<?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>
Si la variable es un encabezado y tiene un formato incorrecto o no es válida (por ejemplo, no tiene el tipo de autenticación o el tipo de autenticación no es "Basic"), ese es el motivo del error.
El encabezado Authorization tiene este formato:
Authorization: <Authentication type> <credentials>
Un encabezado con formato incorrecto se puede transferir a la política BasicAuthentication de dos formas:
Ejemplo 1: no hay ningún tipo de autenticación en el encabezado:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: YWthc2g6MTIz"
Donde
$EXTERNAL_IP
es la dirección IP del balanceador de carga externo. Esta dirección IP está expuesta a Internet. Para obtener más información, consulta Personalizar el enrutamiento de acceso.En el ejemplo anterior, el encabezado Authorization no tiene el tipo de autenticación. Si este encabezado se envía a la política BasicAuthentication que se muestra arriba, recibirás el código de error:
steps.basicauthentication.InvalidBasicAuthenticationSource
Ejemplo 2: El tipo de autenticación no es "Basic":
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
Donde
$EXTERNAL_IP
es la dirección IP del balanceador de carga externo. Esta dirección IP está expuesta a Internet. Para obtener más información, consulta Personalizar el enrutamiento de acceso.En el ejemplo anterior, la cabecera Authorization no tiene el tipo de autenticación "Basic". Si se envía a la política BasicAuthentication que se muestra arriba, recibirás el código de error:
steps.basicauthentication.InvalidBasicAuthenticationSource
Del mismo modo, este error también puede producirse si se usa el tipo de autenticación (por ejemplo, Bearer o Digest Auth) en el encabezado Authorization.
Resolución
Asegúrate de que la cabecera en la que se transfiere la entrada a la política BasicAuthentication tenga el tipo de autenticación y sea de tipo "Basic".
Para solucionar el problema con la política BasicAuthentication de ejemplo que se ha descrito anteriormente, haz una solicitud de API pasando una cadena codificada en Base64 válida con el tipo de autenticación "Basic" en el encabezado Authorization, tal como se muestra a continuación:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Donde $EXTERNAL_IP
es la dirección IP del balanceador de carga externo.
Esta dirección IP está expuesta a Internet. Para obtener más información, consulta Personalizar el enrutamiento de acceso.