Está a ver a documentação do Apigee e do Apigee Hybrid.
Ver documentação do
Apigee Edge.
UnresolvedVariable
Código de 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
Este erro ocorre se a variável que contém a string codificada em Base64 especificada no elemento <Source>
da política BasicAuthentication for:
- Fora do âmbito (não disponível no fluxo específico onde a política está a ser executada)
- Não é possível resolver (não está definido)
Por exemplo, este erro ocorre se a política BasicAuthentication tiver uma variável especificada comorequest.header.Authorization
no elemento<Source>
, mas o cabeçalho de autorização não for transmitido como parte do pedido da API.
Diagnóstico
Identifique a variável usada para o elemento
<Source>
na política BasicAuthentication. Pode encontrar estas informações no elementofaultstring
da resposta de erro. Por exemplo, no seguintefaultstring,
, 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 onde ocorreu a falha. Pode haver uma ou mais políticas de BasicAuthentication. Identifique a política ou as políticas de BasicAuthentication específicas em que a variável especificada no elemento
<Source>
corresponde ao nome da variável identificado na string de falha (passo n.º 1 acima).Por exemplo, a política seguinte define o elemento
<Source>
para uma variável denominadarequest.header.Authorization
, que corresponde ao que está emfaultstring
:<?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>
Determinar se a variável está definida e disponível no fluxo no qual a política BasicAuthentication está a ser executada.
Se a variável for:
- Fora do âmbito (não disponível no fluxo específico onde a política está a ser executada)
- Não é possível resolver (não está definido)
Então, essa é a causa do erro.
No exemplo da política BasicAuthentication apresentado acima, a variável
request.header.Authorization
não foi transmitida como parte do pedido. Ou seja, o pedido da API foi feito sem o cabeçalho de autorização, conforme mostrado abaixo:curl -v "http://$EXTERNAL_IP/basicauth"
Em que
$EXTERNAL_IP
é o endereço IP do balanceador de carga externo. Este endereço IP está exposto à Internet. Para mais informações, consulte o artigo Personalize o encaminhamento de acesso.Uma vez que a variável usada na política BasicAuthentication não está disponível, recebe o código de erro:
steps.basicauthentication.UnresolvedVariable
Resolução
Certifique-se de que a variável usada na política BasicAuthentication está definida ou é transmitida como uma entrada e está disponível no fluxo onde a política está a ser executada.
Para corrigir o problema com a política BasicAuthentication de exemplo abordada acima, faça um pedido de API, conforme mostrado abaixo:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Em que $EXTERNAL_IP
é o endereço IP do balanceador de carga externo.
Este endereço IP está exposto à Internet. Para mais informações, consulte o artigo
Personalize o encaminhamento de acesso.
InvalidBasicAuthenticationSource
Código de 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"
}
}
}
Exemplo de erro Mensagem de erro
{
"fault": {
"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
Causas possíveis
As possíveis causas deste erro são:
Causa | Descrição |
---|---|
Variável de origem inválida | A variável de origem de entrada para a política BasicAuthentication não é uma string codificada em Base64 válida. |
O cabeçalho tem um formato incorreto | O cabeçalho que contém a string codificada em Base64 transmitida para a política BasicAuthentication tem um formato incorreto. |
Causa: variável de origem inválida
Este erro ocorre se a variável que contém a string codificada em Base64 especificada no elemento <Source>
da política BasicAuthentication não contiver um valor válido.
Por exemplo, este erro ocorre 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. Pode encontrar estas informações no elementofaultstring
da resposta de erro. Por exemplo, no seguintefaultstring,
, 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 onde ocorreu a falha. Pode haver uma ou mais políticas de BasicAuthentication. Identifique as políticas de BasicAuthentication específicas em que a variável especificada no elemento
<Source>
corresponde ao nome da variável identificado na string de falha (passo n.º 1 acima).Por exemplo, a política seguinte define o elemento
<Source>
para uma variável denominadarequest.header.Authorization
, que corresponde ao que está emfaultstring
:<?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 no elemento
<Source>
especificado na variável não for uma string codificada em Base64 válida,essa é a causa do erro.
No exemplo da política BasicAuthentication apresentado acima, a variável
request.header.Authorization
enviada pelo cliente como um cabeçalho era inválida, conforme mostrado abaixo:curl -v "http://$EXTERNAL_IP /basicauth" -H "Authorization: Basic 23435"
Em que
$EXTERNAL_IP
é o endereço IP do balanceador de carga externo. Este endereço IP está exposto à Internet. Para mais informações, consulte o artigo Personalize o encaminhamento de acesso.Uma vez que a variável
request.header.Authorization
tem uma string codificada em Base64 inválida "23435"
, recebe o código de erro:steps.basicauthentication.InvalidBasicAuthenticationSource
Resolução
Certifique-se de que 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 BasicAuthentication abordada acima, faça um pedido de API transmitindo uma string codificada em Base64 válida no cabeçalho de autorização, conforme mostrado abaixo:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Em que $EXTERNAL_IP
é o endereço IP do balanceador de carga externo.
Este endereço IP está exposto à Internet. Para mais informações, consulte o artigo
Personalize o encaminhamento de acesso.
Causa: o cabeçalho está formatado incorretamente/é inválido
Este erro ocorre se o cabeçalho transmitido à política BasicAuthentication estiver formatado incorretamente ou for inválido.
Por exemplo, este erro ocorre se a política BasicAuthentication tiver uma variável especificada comorequest.header.Authorization
no elemento<Source>
e o cabeçalho transmitido como parte do pedido da API estiver formatado incorretamente/inválido.
Diagnóstico
Identifique a variável usada para o elemento
<Source>
na política BasicAuthentication. Pode encontrar estas informações no elementofaultstring
da resposta de erro. Por exemplo, no erro seguinte, 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 onde ocorreu a falha. Pode haver uma ou mais políticas de BasicAuthentication. Identifique as políticas de BasicAuthentication específicas em que a variável especificada no elemento
<Source>
corresponde ao nome da variável identificado na string de falha (passo n.º 1 acima).Por exemplo, a política seguinte define o elemento
<Source>
para uma variável denominadarequest.header.Authorization
, que corresponde ao que está emfaultstring
:<?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 estiver mal formada ou for inválida, ou seja, não tiver o tipo de autenticação ou se o tipo de autenticação não for "Básico", essa é a causa do erro.
O cabeçalho de autorização tem este formato:
Authorization: <Authentication type> <credentials>
Um cabeçalho com formato incorreto pode ser transmitido à política BasicAuthentication de duas formas:
Exemplo 1: nenhum tipo de autenticação no cabeçalho:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: YWthc2g6MTIz"
Em que
$EXTERNAL_IP
é o endereço IP do balanceador de carga externo. Este endereço IP está exposto à Internet. Para mais informações, consulte o artigo Personalize o encaminhamento de acesso.No exemplo acima, o cabeçalho Authorization não tem o tipo de autenticação. Se este cabeçalho for transmitido à política BasicAuthentication apresentada acima, recebe o código de erro:
steps.basicauthentication.InvalidBasicAuthenticationSource
Exemplo 2: o tipo de autenticação não é do tipo "Básico":
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
Em que
$EXTERNAL_IP
é o endereço IP do balanceador de carga externo. Este endereço IP está exposto à Internet. Para mais informações, consulte o artigo Personalize o encaminhamento de acesso.No exemplo acima, o cabeçalho Authorization não tem o tipo de autenticação "Basic". Se este valor for transmitido à política BasicAuthentication apresentada acima, recebe o código de erro:
steps.basicauthentication.InvalidBasicAuthenticationSource
Da mesma forma, este erro também pode ocorrer se o tipo de autenticação, como Bearer, Digest Auth, etc., for usado no cabeçalho de autorização.
Resolução
Certifique-se de que o cabeçalho no qual a entrada para a política BasicAuthentication é transmitida tem o tipo de autenticação e é do tipo "Básico".
Para corrigir o problema com a política BasicAuthentication abordada acima, faça um pedido de API transmitindo uma string codificada em Base64 válida com o tipo de autenticação "Básico" no cabeçalho de autorização, conforme mostrado abaixo:
curl -v "http://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
Em que $EXTERNAL_IP
é o endereço IP do balanceador de carga externo.
Este endereço IP está exposto à Internet. Para mais informações, consulte o artigo
Personalize o encaminhamento de acesso.