Esta página aplica-se ao Apigee e ao Apigee Hybrid.
  
    Veja a documentação do 
    Apigee Edge.
  
  
       
 
  
O quê
Permite-lhe adicionar ou atualizar atributos personalizados associados a um token de acesso. Os atributos personalizados podem incluir elementos como o nome do departamento, um ID de cliente ou um identificador de sessão. Consulte também Personalizar tokens e códigos de autorização.
Só pode adicionar ou modificar atributos personalizados. Não pode usar esta política para alterar campos como scope, status, expires_in, developer_email, client_id, org_name ou refresh_count. Se já existir um atributo, esta política atualiza-o. Se não existir, a política adiciona-o. O token de acesso referenciado tem de ser válido e estar num estado aprovado.
Esta política é uma política extensível e a utilização desta política pode ter implicações de custo ou utilização, consoante a sua licença do Apigee. Para ver informações sobre os tipos de políticas e as implicações de utilização, consulte Tipos de políticas.
Amostras
Exemplo básico
Segue-se um exemplo de uma política usada para atualizar uma chave de acesso OAuth 2.0. O exemplo abaixo
      localiza o token de acesso na mensagem de pedido procurando um parâmetro de consulta denominado
      access_token. Quando um token de acesso é apresentado por uma app cliente, a política
      abaixo localiza o token de acesso no parâmetro de consulta. Em seguida, atualiza o perfil da chave de acesso. Adiciona uma propriedade personalizada denominada department.id ao perfil. 
<SetOAuthV2Info name="SetOAuthV2Info"> 
  <AccessToken ref="request.queryparam.access_token"></AccessToken>
  <Attributes>
    <Attribute name="department.id" ref="request.queryparam.department_id"></Attribute>
  </Attributes>
</SetOAuthV2Info>Referência do elemento
A referência do elemento descreve os elementos e os atributos da política SetOAuthV2.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SetOAuthV2Info async="false" continueOnError="false" enabled="true" name="SetOAuthV2Info-1"> <DisplayName>Set OAuth v2.0 Info 1</DisplayName> <AccessToken ref={some-variable}></AccessToken> <Attributes/> </SetOAuthV2Info> </xml>
Atributos <SetOAuthV2Info>
<SetOAuthV2Info async="false" continueOnError="false" enabled="true" name="Set-OAuth-v20-Info-1">
A tabela seguinte descreve os atributos comuns a todos os elementos principais de políticas:
| Atributo | Descrição | Predefinição | Presença | 
|---|---|---|---|
| name | O nome interno da política. O valor do atributo  Opcionalmente, use o elemento  | N/A | Obrigatória | 
| continueOnError | Definido como  Definido como  | falso | Opcional | 
| enabled | Defina como  Defina como  | verdadeiro | Opcional | 
| async | Este atributo foi descontinuado. | falso | Descontinuado | 
Elemento <DisplayName>
Use em conjunto com o atributo name para etiquetar a política no editor de proxy da IU de gestão com um nome diferente em linguagem natural.
<DisplayName>Policy Display Name</DisplayName>
| Predefinição | N/A Se omitir este elemento, é usado o valor do atributo  | 
|---|---|
| Presença | Opcional | 
| Tipo | String | 
Elemento <AccessToken>
Identifica a variável onde o token de acesso está localizado. Por exemplo, se o token de acesso estiver
  anexado à mensagem de pedido como um parâmetro de consulta, especifique
  request.queryparam.access_token. Pode usar qualquer variável válida que faça referência ao token. Em alternativa, pode transmitir a string do token literal (caso raro).
<AccessToken ref="request.queryparam.access_token"></AccessToken>
| Predefinição: | N/A | 
| Presença: | Obrigatória | 
| Tipo: | String | 
Atributos
| Atributo | Descrição | Predefinição | Presença | 
|---|---|---|---|
| ref | Uma variável de token de acesso. Normalmente, é obtido de uma variável de fluxo. | N/A | Opcional | 
Elemento <Attributes>
Um conjunto de atributos no perfil do token de acesso que vai ser modificado ou aumentado.
| Predefinição: | N/A | 
| Presença: | Obrigatória | 
| Tipo: | N/A | 
Elemento <Attributes>/<Attribute>
Um atributo individual a atualizar.
O atributo name identifica a propriedade personalizada do perfil do token de acesso a ser atualizada. Este exemplo mostra como usar um valor de variável referenciado e um valor estático.
  <Attributes>
    <Attribute name="department.id" ref="request.queryparam.department_id"></Attribute>
    <Attribute name="foo">bar</Attribute>
  </Attributes>| Predefinição: | N/A | 
| Presença: | Opcional | 
| Tipo: | N/A | 
Atributos
| Atributo | Descrição | Predefinição | Presença | 
|---|---|---|---|
| nome | O nome do atributo do perfil a adicionar ou alterar. | N/A | |
| ref | O valor a atribuir ao atributo do perfil. | N/A | Opcional | 
Variáveis de fluxo
Em caso de êxito, são definidas as seguintes variáveis de fluxo:
- oauthv2accesstoken.{policyName}.access_token
- oauthv2accesstoken.{policyName}.client_id
- oauthv2accesstoken.{policyName}.refresh_count
- oauthv2accesstoken.{policyName}.organization_name
- oauthv2accesstoken.{policyName}.expires_in //--in seconds
- oauthv2accesstoken.{policyName}.refresh_token_expires_in //--in seconds
- oauthv2accesstoken.{policyName}.issued_at
- oauthv2accesstoken.{policyName}.status
- oauthv2accesstoken.{policyName}.api_product_list
- oauthv2accesstoken.{policyName}.token_type
- oauthv2accesstoken.{policyName}.{custom_attribute_name}
Esquema
Cada tipo de política é definido por um esquema XML (.xsd). Para referência, os esquemas de políticas
  estão disponíveis no GitHub.
Referência de erro
Esta secção descreve os códigos de falha e as mensagens de erro devolvidas, bem como as variáveis de falha definidas pelo Apigee quando esta política aciona um erro. Estas informações são importantes para saber se está a desenvolver regras de falhas para tratar falhas. Para saber mais, consulte o artigo O que precisa de saber acerca dos erros de políticas e o artigo Processamento de falhas.
Erros de tempo de execução
Estes erros podem ocorrer quando a política é executada.
| Código de falha | Estado de HTTP | Causa | 
|---|---|---|
| steps.oauth.v2.access_token_expired | 500 | O token de acesso enviado para a política expirou. | 
| steps.oauth.v2.invalid_access_token | 500 | O token de acesso enviado para a política é inválido. | 
| steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound | 401 | Consulte o artigo A validação do token de acesso do Oauth2.0 devolve o erro "Invalid API call as no apiproduct match found" para obter informações sobre a resolução de problemas deste erro. | 
Erros de implementação
Consulte a mensagem comunicada na IU para obter informações sobre erros de implementação.
Variáveis de falha
Estas variáveis são definidas quando esta política aciona um erro no tempo de execução.
| Variáveis | Onde | Exemplo | 
|---|---|---|
| fault.name="fault_name" | fault_name é o nome da falha, conforme indicado na tabela Erros de tempo de execução acima. O nome da falha é a última parte do código de falha. | fault.name = "invalid_access_token" | 
| oauthV2.policy_name.failed | policy_name é o nome especificado pelo utilizador da política que gerou a falha. | oauthV2.SetTokenInfo.failed = true | 
| oauthV2.policy_name.fault.name | policy_name é o nome especificado pelo utilizador da política que gerou a falha. | oauthV2.SetTokenInfo.fault.name = invalid_access_token | 
| oauthv2.policy_name.fault.cause | policy_name é o nome especificado pelo utilizador da política que gerou a falha. | oauthV2.SetTokenInfo.cause = Invalid Access Token | 
Exemplo de resposta de erro
{
  "fault": {
    "faultstring": "Invalid Access Token",
    "detail": {
      "errorcode": "keymanagement.service.invalid_access_token"
    }
  }
}Exemplo de regra de falha
<FaultRule name=SetOAuthV2Info Faults">
    <Step>
        <Name>AM-InvalidTokenResponse</Name>
        <Condition>(fault.name = "invalid_access_token")</Condition>
    </Step>
    <Condition>(oauthV2.failed = true) </Condition>
</FaultRule>