Você está lendo a documentação do Apigee Edge.
  Acesse a documentação da
     Apigee X. info
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: | 
           Booleano  | 
      
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>
Para uma operação Encode, especifica a variável de destino a ser definida com o valor codificado
   gerado por esta 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 para a operação Encode. | 
      
| 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>