Esta é a documentação do Apigee Edge.
Acesse
Documentação da Apigee X. informações
O que
Permite usar a autenticação básica leve para
maior segurança. A política usa um nome de usuário e uma senha, a Base64 os codifica e grava o
valor resultante em uma variável. O valor resultante está no formato Basic
Base64EncodedString
. Normalmente, esse valor é gravado em um cabeçalho HTTP, como
Autorização.
A política também permite decodificar as credenciais armazenadas em uma string codificada em Base64 em um nome de usuário e uma senha.
Vídeo: este vídeo demonstra como codificar um nome de usuário e senha em base64 usando a política de autenticação básica.
Vídeo: este vídeo demonstra como decodificar um nome de usuário e uma senha codificados em base64 usando a política de autenticação básica.
Amostras
Codificação de saída
<BasicAuthentication name="ApplyBasicAuthHeader"> <DisplayName>ApplyBasicAuthHeader</DisplayName> <Operation>Encode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="BasicAuth.credentials.username" /> <Password ref="BasicAuth.credentials.password" /> <AssignTo createNew="false">request.header.Authorization</AssignTo> </BasicAuthentication>
Na configuração da política de amostra acima, o nome de usuário e a senha a serem codificados são
derivados das variáveis especificadas pelos atributos ref
nos
elementos <User>
e <Password>
. As variáveis precisam ser
definidas antes da execução dessa política. Normalmente, as variáveis são preenchidas por valores
lidos em um mapa de chave-valor. Consulte a política de operações de mapeamento de
chave-valor.
Essa configuração resulta no cabeçalho HTTP denominado Authorization, conforme especificado pelo elemento <AssignTo>, sendo adicionado à mensagem de solicitação de saída enviada para o back-end. servidor:
Authorization: Basic TXlVc2VybmFtZTpNeVBhc3N3b3Jk
Os valores <User>
e <Password>
são concatenados
com dois-pontos antes da codificação Base64.
Considere que você tem um mapa de chave-valor com a seguinte entrada:
{ "encrypted" : true, "entry" : [ { "name" : "username", "value" : "MyUsername" }, { "name" : "password", "value" : "MyPassword" } ], "name" : "BasicAuthCredentials" }
Anexe as seguintes políticas KeyValueMapOperations antes da política BasicAuthentication
para extrair os valores dos elementos <User>
e
<Password>
do armazenamento de chave-valor e preenchê-los para as
variáveis credentials.username
e credentials.password
.
<KeyValueMapOperations name="getCredentials" mapIdentifier="BasicAuthCredentials"> <Scope>apiproxy</Scope> <Get assignTo="credentials.username" index='1'> <Key> <Parameter>username</Parameter> </Key> </Get> <Get assignTo="credentials.password" index='1'> <Key> <Parameter>password</Parameter> </Key> </Get> </KeyValueMapOperations>
Decodificação de entrada
<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>
Nesta amostra de política, a política decodifica o nome de usuário e a senha do
cabeçalho HTTP Authorization
, conforme especificado pelo elemento <Source>. A string codificada em
Base64 precisa estar no formato Basic Base64EncodedString.
A política grava o nome de usuário decodificado na variável request.header.username e a senha decodificada na variável request.header.password.
Sobre a política de autenticação básica
A política tem dois modos de operações:
- Encode: a Base64 codifica um nome de usuário e uma senha armazenados nas variáveis.
- Decode: decodifica o nome de usuário e a senha de uma string codificada em Base64.
Geralmente, o nome de usuário e a senha são armazenados no armazenamento de chave/valor e, em seguida, leem a partir do armazenamento de chave/valor no ambiente de execução. Para ver detalhes sobre o uso do armazenamento de chave-valor, consulte a Política de operações de mapeamento de chave-valor.
Referência de elemento
A referência de elemento descreve os elementos e atributos da política BasicAuthentication.
<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1"> <DisplayName>Basic Authentication 1</DisplayName> <Operation>Encode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="request.queryparam.username" /> <Password ref="request.queryparam.password" /> <AssignTo createNew="false">request.header.Authorization</AssignTo> <Source>request.header.Authorization</Source> </BasicAuthentication>
Atributos de <BasicAuthentication>
<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1">
A tabela a seguir descreve atributos comuns a todos os elementos pai de políticas:
Atributo | Descrição | Padrão | Presença |
---|---|---|---|
name |
O nome interno da política. O valor do atributo Opcionalmente, use o elemento |
N/A | Obrigatório |
continueOnError |
Defina como Defina como |
falso | Opcional |
enabled |
Defina como Defina como |
true | Opcional |
async |
Esse atributo está obsoleto. |
falso | Obsoleto |
Elemento <DisplayName>
Use em conjunto com o atributo name
para rotular a política no
editor de proxy da IU de gerenciamento com um nome de linguagem natural diferente.
<DisplayName>Policy Display Name</DisplayName>
Padrão |
N/A Se você omitir esse elemento, será usado o valor do atributo |
---|---|
Presença | Opcional |
Tipo | String |
Elemento <Operation>
Determina se a política Base64 codifica ou decodifica credenciais.
<Operation>Encode</Operation>
Padrão: | N/A |
Presença: | Obrigatório |
Tipo: |
String. Valores válidos:
|
Elemento <IgnoreUnresolvedVariables>
Quando definida como true
, a política não emitirá um erro se uma variável não puder ser
resolvida. Quando usada no contexto de uma política BasicAuthentication, essa configuração geralmente é definida
como false
porque geralmente é vantajoso gerar um erro se um nome de usuário ou
senha não for encontrado nas variáveis especificadas.
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
Padrão: | verdadeiro |
Presença: | Opcional |
Tipo: |
Booleanos |
Elemento <User>
- Para codificação, use o elemento
<User>
para especificar a variável que contém o nome de usuário. Os valores de nome de usuário e senha são concatenados com dois-pontos antes da codificação Base64. - Para decodificar, especifique a variável em que o nome de usuário decodificado é gravado.
<User ref="request.queryparam.username" />
Padrão: | N/A |
Presença: | Obrigatório |
Tipo: |
N/A |
Atributos
Atributo | Descrição | Padrão | Presença |
---|---|---|---|
ref |
A variável da qual a política lê dinamicamente o nome de usuário (codificado) ou grava o nome de usuário (decodificação). |
N/A | Obrigatório |
Elemento <Password>
- Para codificação, use o elemento
<Password>
para especificar a variável que contém a senha. - Para decodificar, especifique a variável em que a senha decodificada é gravada.
<Password ref="request.queryparam.password" />
Padrão: | N/A |
Presença: | Obrigatório |
Tipo: |
N/A |
Atributos
Atributo | Descrição | Padrão | Presença |
---|---|---|---|
ref |
A variável da qual a política lê dinamicamente a senha (codificar) ou grava a senha (decodificar). |
N/A | Obrigatório |
Elemento <AssignTo>
Especifica a variável de destino a ser definida com o valor codificado ou decodificado gerado por essa política.
O exemplo a seguir indica que a política precisa definir o cabeçalho Authorization
da mensagem para o valor gerado:
<AssignTo createNew="false">request.header.Authorization</AssignTo>
Padrão: | N/A |
Presença: | Obrigatório |
Tipo: |
String |
Atributos
Atributo | Descrição | Padrão | Presença |
---|---|---|---|
createNew | Determina se a política precisa substituir a variável, caso ela já esteja
definida.
Quando "falso", a atribuição à variável ocorrerá somente se a variável estiver desativada no momento (nula). Quando "verdadeiro", a atribuição à variável sempre ocorrerá. Normalmente, você define esse atributo como "falso" (o padrão). |
falso | Opcional |
Elemento <Source>
Para decodificação, a variável que contém a string codificada em Base64, no
formato Basic
Base64EncodedString
. Por exemplo,
especifique request.header.Authorization
, correspondente ao cabeçalho Autorização.
<Source>request.header.Authorization</Source>
Padrão: | N/A |
Presença: | Obrigatório para a operação de decodificação. |
Tipo: |
N/A |
Variáveis de fluxo
A seguinte variável de fluxo é definida quando a política falha:
BasicAuthentication.{policy_name}.failed
(com o valor true)
Referência de erros
Nesta seção, descrevemos os códigos e as mensagens de erro retornados e as variáveis de falha definidas pelo Edge quando a política aciona um erro. Essas informações são importantes para saber se você está desenvolvendo regras de falha para lidar com erros. Para saber mais, consulte O que você precisa saber sobre erros de política e Como lidar com falhas.
Erros de execução
Esses erros podem ocorrer quando a política é executada.
Código de falha | Status HTTP | Causa | Correção |
---|---|---|---|
steps.basicauthentication.InvalidBasicAuthenticationSource |
500 | Em uma decodificação, quando a string codificada de Base64 recebida não contém um valor válido ou o cabeçalho é malformado (por exemplo, não começa com "Basic"). | build |
steps.basicauthentication.UnresolvedVariable |
500 | As variáveis de origem necessárias para decodificar ou codificar não estão presentes. Este erro só
poderá ocorrer se IgnoreUnresolvedVariables for falso. |
build |
Erros na implantação
Esses erros podem ocorrer quando você implanta um proxy que contém esta política.
Erro de nome | Ocorre quando | Correção |
---|---|---|
UserNameRequired |
O elemento <User> precisa estar presente na operação nomeada. |
build |
PasswordRequired |
O elemento <Password> precisa estar presente na operação nomeada. |
build |
AssignToRequired |
O elemento <AssignTo> precisa estar presente na operação nomeada. |
build |
SourceRequired |
O elemento <Source> precisa estar presente na operação nomeada. |
build |
Variáveis de falha
Essas variáveis são definidas quando ocorre um erro de tempo de execução. Para mais informações, consulte O que você precisa saber sobre erros de política.
Variáveis | Onde | Exemplo |
---|---|---|
fault.name="fault_name" |
fault_name é o nome da falha, conforme listado na tabela Erros de ambiente de execução acima. O nome da falha é a última parte do código de falha. | fault.name Matches "UnresolvedVariable" |
BasicAuthentication.policy_name.failed |
policy_name é o nome especificado pelo usuário da política que causou a falha. | BasicAuthentication.BA-Authenticate.failed = true |
Exemplo de resposta de erro
{ "fault":{ "detail":{ "errorcode":"steps.basicauthentication.UnresolvedVariable" }, "faultstring":"Unresolved variable : request.queryparam.password" } }
Exemplo de regra de falha
<FaultRule name="Basic Authentication Faults"> <Step> <Name>AM-UnresolvedVariable</Name> <Condition>(fault.name Matches "UnresolvedVariable") </Condition> </Step> <Step> <Name>AM-AuthFailedResponse</Name> <Condition>(fault.name = "InvalidBasicAuthenticationSource")</Condition> </Step> <Condition>(BasicAuthentication.BA-Authentication.failed = true) </Condition> </FaultRule>