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>