Esta página se aplica ao Apigee e ao Apigee híbrido .
Veja a documentação do Apigee Edge .
Sobre metadados de token e código de autorização
A Apigee gera tokens de acesso OAuth, tokens de atualização e códigos de autorização e os distribui aos aplicativos autenticados. No momento da geração, a Apigee armazena esses tokens e códigos. Posteriormente, quando a Apigee recebe solicitações de API de entrada contendo esses tokens ou códigos, ela usa as informações armazenadas para autorizar as solicitações.
Quando a Apigee gera esses artefatos OAuth, ela também anexa metadados ao token ou código. Por exemplo, um token de acesso é associado a pares nome/valor que definem o tempo de expiração, o aplicativo e o desenvolvedor associados, além de outras informações.
A representação JSON de um token de acesso da Apigee se parece com o seguinte:
{ "issued_at" : "1372170159093", "application_name" : "ccd1803b-b557-4520-bd62-ddd3abf8e501", "scope" : "READ", "status" : "approved", "api_product_list" : "[Product1,Product2]", "api_product_list_json" : ["Product1", "Product2"], "expires_in" : "3599", //--in seconds "developer.email" : "[email protected]", "organization_id" : "0", "refresh_token" : "82XMXgDyHTpFyXOaApj8C2AGIPnN2IZe", "client_id" : "deAVedE0W9Z9U35PAMaAJYphBJCGdrND", "access_token" : "shTUmeI1geSKin0TODcGLXBNe9vp", "organization_name" : "apifactory", "refresh_count" : "0" }
Adicionar atributos personalizados a tokens OAuth e códigos de autorização
Às vezes, é útil anexar metadados personalizados a um token de acesso. Por exemplo, você pode querer adicionar um nome de usuário, associações de grupo ou funções para um usuário, um ID de cliente, um identificador de sessão ou outras informações arbitrárias a um token. Na Apigee, esses dados são chamados de "atributos personalizados". Posteriormente, quando o token é verificado no escopo de uma solicitação de API, esses dados são disponibilizados ao proxy da API por meio de variáveis de contexto. Um proxy da API pode tomar decisões refinadas de autorização ou roteamento com base nos dados personalizados anexados ao token.
Para anexar dados arbitrários a um token, use o elemento <Attributes>
na política OAuthV2 . Você pode especificar o nome e o valor do atributo personalizado. Por exemplo, aqui está uma configuração de política que gera um token e anexa um atributo personalizado chamado "tenant_list" ao token:
<OAuthV2 name="GenerateAccessToken"> <Operation>GenerateAccessToken</Operation> <ExpiresIn>600000</ExpiresIn> <GenerateResponse /> <SupportedGrantTypes> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GrantType>request.queryparam.grant_type</GrantType> <Attributes> <Attribute name="tenant_list" ref="tenant_list_retrieved_from_external_service" display="false"/> </Attributes> </OAuthV2>
Você pode especificar vários atributos personalizados e anexá-los implicitamente a um código de autorização ( <Operation>GenerateAuthorizationCode</Operation>
) ou a um token ( <Operation>GenerateAccessToken</Operation>
) no momento da geração.
Quando display
é definido como true
(o padrão), os atributos personalizados são retornados na resposta, onde podem ser visualizados pelo aplicativo ou repassados ao usuário final. Quando display
é definido como false
, os atributos personalizados são armazenados no repositório de dados, mas não são retornados na mensagem de resposta. Em ambos os casos, os dados personalizados ficam disponíveis para as políticas no Proxy da API, após a verificação do token.
Para obter mais informações sobre a opção display
, consulte Exibindo ou ocultando atributos personalizados na resposta .
Obtendo atributos de token de acesso personalizados em tempo de execução
Quando há uma chamada para OAuthV2/VerifyAccessToken
, a Apigee verifica o token consultando-o no repositório de tokens. Em seguida, a Apigee preenche um conjunto de variáveis de contexto contendo informações sobre o token. Entre elas:
-
organization_name
-
developer.id
-
developer.app.name
-
client_id
-
grant_type
-
token_type
-
access_token
-
issued_at
-
expires_in
//--em segundos -
status
-
scope
-
apiproduct.name*
Se houver atributos personalizados no token, esses atributos personalizados serão disponibilizados em uma variável de contexto com o nome accesstoken.{custom_attribute}
. Por exemplo, suponha que um token seja emitido a partir da política mostrada acima. Após a verificação desse token, haveria uma variável de contexto adicional chamada accesstoken.tenant_list
, contendo o valor armazenado no momento em que o token foi gerado.
Políticas ou condições podem então se referir a essas variáveis e modificar o comportamento com base nos valores armazenados nelas.
Definir e atualizar atributos personalizados em tempo de execução
Em algumas situações, você precisará que seu Proxy de API atualize os metadados associados a um token de acesso em tempo de execução enquanto uma chamada de API estiver sendo processada na Apigee. Para ajudar com isso, a Apigee fornece políticas para obter e definir atributos de token. Para obter mais informações, consulte a política "Obter informações do OAuth V2" e a política "Definir informações do OAuth V2" .
Em cada uma dessas políticas, o elemento AccessToken
deve se referir a uma variável que contém o token de acesso.