Esta é a documentação da Apigee e da Apigee híbrida.
    Confira a documentação da Apigee Edge.
  
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 elemento- faultstringda resposta de erro. Por exemplo, no- faultstring,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 chamada- request.header.Authorization, que corresponde ao que está na- faultstring:- <?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.Authorizationnã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://$EXTERNAL_IP/basicauth" - Em que - $EXTERNAL_IPé o IP do balanceador de carga externo. Esse endereço IP é exposto à Internet. Para mais informações, consulte Personalize o roteamento de acesso.- 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://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
    Em que $EXTERNAL_IP é o IP do balanceador de carga externo.
    Esse endereço IP é exposto à Internet. Para mais informações, consulte
    Personalize o roteamento de acesso.
  
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 elemento- faultstringda resposta de erro. Por exemplo, no- faultstring,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 chamada- request.header.Authorization, que corresponde ao que está na- faultstring:- <?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.Authorizationque foi enviada pelo cliente como cabeçalho foi inválida, conforme mostrado abaixo:- curl -v "http://$EXTERNAL_IP /basicauth" -H "Authorization: Basic 23435" - Em que - $EXTERNAL_IPé o IP do balanceador de carga externo. Esse endereço IP é exposto à Internet. Para mais informações, consulte Personalizar o roteamento de acesso.- Como a variável - request.header.Authorizationtem 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://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
    Em que $EXTERNAL_IP é o IP do balanceador de carga externo.
    Esse endereço IP é exposto à Internet. Para mais informações, consulte
    Personalize o roteamento de acesso.
  
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 elemento- faultstringda 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 chamada- request.header.Authorization, que corresponde ao que está na- faultstring:- <?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://$EXTERNAL_IP/basicauth" -H "Authorization: YWthc2g6MTIz" - Em que - $EXTERNAL_IPé o IP do balanceador de carga externo. Esse endereço IP é exposto à Internet. Para mais informações, consulte Personalizar o roteamento de acesso.- 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://$EXTERNAL_IP/basicauth" -H "Authorization: OAuth YWthc2g6MTIz" - Em que - $EXTERNAL_IPé o IP do balanceador de carga externo. Esse endereço IP é exposto à Internet. Para mais informações, consulte Personalize o roteamento de acesso.- 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://$EXTERNAL_IP/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
    Em que $EXTERNAL_IP é o IP do balanceador de carga externo.
    Esse endereço IP é exposto à Internet. Para mais informações, consulte
    Personalize o roteamento de acesso.