Você está visualizando a documentação do Apigee Edge.
Acesse a
documentação da
Apigee X. info
UnresolvedVariable
Código do erro
steps.basicauthentication.UnresolvedVariable
Corpo da resposta de erro
{
"fault": {
"faultstring": "Unresolved variable : [variable_name]",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Exemplo de mensagem de erro
{
"fault": {
"faultstring": "Unresolved variable : request.header.Authorization",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
Causa
Esse erro ocorrerá se a variável que contém a string codificada em Base64 especificada no elemento <Source>
da política BasicAuthentication for:
- Fora do escopo (não disponível no fluxo específico em que a política está sendo executada)
- Não é possível resolver (não está definida)
Por exemplo, esse erro ocorrerá se a política BasicAuthentication tiver uma variável especificada como request.header.Authorization
no elemento <Source>
, mas o cabeçalho Authorization não for transmitido como parte da solicitação de API.
Diagnóstico
Identifique a variável usada para o elemento
<Source>
na política BasicAuthentication. Você encontra essas informações no elementofaultstring
da resposta de erro. Por exemplo, nofaultstring,
a seguir, a variável usada para o elemento<Source>
érequest.header.Authorization
:"faultstring": "Unresolved variable : request.header.Authorization"
Examine todas as políticas BasicAuthentication no proxy de API específico em que a falha ocorreu. Pode haver uma ou mais políticas BasicAuthentication. Identifique as políticas ou a política BasicAuthentication específicas em que a variável especificada no elemento
<Source>
corresponde ao nome da variável identificado na string de falha (etapa 1 acima).Por exemplo, a política a seguir define o elemento
<Source>
como uma variável chamadarequest.header.Authorization
, que corresponde ao que está nafaultstring
:<?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>
Determine se a variável está definida e disponível no fluxo em que a política BasicAuthentication está sendo executada.
Se a variável for:
- Fora do escopo (não disponível no fluxo específico em que a política está sendo executada)
- Não é possível resolver (não está definida)
essa será a causa do erro.
No exemplo de política BasicAuthentication mostrado acima, a variável
request.header.Authorization
não foi transmitida como parte da solicitação. Ou seja, a solicitação de API foi feita sem o cabeçalho Authorization, como mostrado abaixo:curl -v "http://org-env.apigee.net/basicauth"
Como a variável usada na política BasicAuthentication não está disponível, você recebe o código de erro:
steps.basicauthentication.UnresolvedVariable
Resolução
Verifique se a variável usada na política BasicAuthentication está definida ou transmitida como uma entrada e disponível no fluxo em que a política está sendo executada.
Para corrigir o problema com a política de exemplo BasicAuthentication discutida acima, faça uma solicitação de API conforme mostrado abaixo:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
InvalidBasicAuthenticationSource
Código do erro
steps.basicauthentication.InvalidBasicAuthenticationSource
Corpo da resposta de erro
{
"fault": {
"faultstring": "Source variable : [variable_name] for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Mensagem de erro de exemplo
{
"fault": {
"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Causas possíveis
Veja a seguir as possíveis causas para esse erro:
Causa | Descrição |
---|---|
Variável de origem inválida | A variável de origem de entrada para BasicPolicy Policy não é uma string válida codificada em Base64. |
O cabeçalho está incorreto | O cabeçalho que contém a string codificada em Base64 passada para a política BasicAuthentication está incorreto. |
Causa: variável de origem inválida
Esse erro ocorrerá se a variável que contém a string codificada em Base64 especificada no elemento <Source>
da política BasicAuthentication não contém um valor válido.
Por exemplo, esse erro ocorrerá se a variável especificada no elemento <Source>
da política BasicAuthentication não tiver uma string codificada em Base64 válida.
Diagnóstico
Identifique a variável usada para o elemento
<Source>
na política BasicAuthentication. Você encontra essas informações no elementofaultstring
da resposta de erro. Por exemplo, nofaultstring,
a seguir, a variável usada para o elemento<Source>
érequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Examine todas as políticas BasicAuthentication no proxy de API específico em que a falha ocorreu. Pode haver uma ou mais políticas BasicAuthentication. Identifique as políticas ou a política BasicAuthentication específicas em que a variável especificada no elemento
<Source>
corresponde ao nome da variável identificado na string de falha (etapa 1 acima).Por exemplo, a política a seguir define o elemento
<Source>
como uma variável chamadarequest.header.Authorization
, que corresponde ao que está nafaultstring
:<?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 o valor armazenado na variável especificada no elemento
<Source>
não for uma string codificada em Base64 válida,isso é a causa do erro.
No exemplo de política BasicAuthentication mostrado acima, a variável
request.header.Authorization
que foi enviada pelo cliente como cabeçalho foi inválida, conforme mostrado abaixo:curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic 23435"
Como a variável
request.header.Authorization
tem uma string codificada em Base64 inválida "23435"
", você recebe o código de erro:steps.basicauthentication.InvalidBasicAuthenticationSource
Resolução
Verifique se a variável especificada para o elemento <Source>
na política BasicAuthentication tem uma string codificada em Base64 válida.
Para corrigir o problema com a política de exemplo BasicAuthentication discutida acima, faça uma solicitação de API transmitindo uma string codificada em Base64 válida no cabeçalho Authorization como mostrado abaixo:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Causa: o cabeçalho está incorreto/inválido
Esse erro ocorrerá se o cabeçalho passado para a política BasicAuthentication estiver incorreto ou for inválido.
Por exemplo, esse erro ocorrerá se a política BasicAuthentication tiver uma variável especificada como request.header.Authorization
no elemento <Source>
e o cabeçalho passado como parte da solicitação de API for malformado/inválido.
Diagnóstico
Identifique a variável usada para o elemento
<Source>
na política BasicAuthentication. Você encontra essas informações no elementofaultstring
da resposta de erro. Por exemplo, no erro a seguir, a variável usada para o elemento<Source>
érequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
Examine todas as políticas BasicAuthentication no proxy de API específico em que a falha ocorreu. Pode haver uma ou mais políticas BasicAuthentication. Identifique as políticas ou a política BasicAuthentication específicas em que a variável especificada no elemento
<Source>
corresponde ao nome da variável identificado na string de falha (etapa 1 acima).Por exemplo, a política a seguir define o elemento
<Source>
como uma variável chamadarequest.header.Authorization
, que corresponde ao que está nafaultstring
:<?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 a variável for um cabeçalho e for malformada ou inválida, ou seja, não tiver o tipo de autenticação ou se o tipo de autenticação não for "Basic", isso é a causa do erro.
O cabeçalho de autorização tem este formato:
Authorization: <Authentication type> <credentials>
Um cabeçalho incorreto pode ser passado à política BasicAuthentication de duas maneiras:
Exemplo 1: nenhum tipo de autenticação no cabeçalho:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: YWthc2g6MTIz"
No exemplo acima, o cabeçalho Authorization não tem o tipo Autenticação. Se esse cabeçalho for passado à política BasicAuthentication mostrada acima, você receberá o código de erro:
steps.basicauthentication.InvalidBasicAuthenticationSource
Exemplo 2: o tipo de autenticação não é do tipo "Basic":
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
No exemplo acima, o cabeçalho Authorization não tem o tipo de autenticação "Basic". Se ele for passado para a política BasicAuthentication mostrada acima, você receberá o código de erro:
steps.basicauthentication.InvalidBasicAuthenticationSource
Da mesma forma, esse erro também poderá ocorrer se o tipo de autenticação, como Bearer, Digest Auth etc. for usado no cabeçalho Authorization.
Resolução
Verifique se o cabeçalho em que a entrada para a política BasicAuthentication foi transmitida tem o tipo de autenticação e é do tipo "Basic".
Para corrigir o problema com a política de exemplo BasicAuthentication discutida acima, faça uma solicitação de API transmitindo uma string codificada em Base64 válida com o tipo de autenticação "Basic" no cabeçalho Authorization, como mostrado abaixo:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"