Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Veja a documentação do
Apigee Edge.
Pode revogar os tokens de acesso OAuth 2.0 por ID do utilizador final, ID da app ou ambos através da política RevokeOAuthV2. Por utilizador final, referimo-nos ao utilizador da app que está a chamar a API.
Quando armazenar o User-ID num token de acesso
Por predefinição, os IDs de utilizadores não são incluídos nos tokens de acesso. Por vezes, é útil armazenar o ID do utilizador num token de acesso. Por exemplo:
- Uma funcionalidade para o seu Website ou app onde os utilizadores podem ver as apps de terceiros que autorizaram e uma opção para revogar o acesso a essas apps.
- Uma funcionalidade que permite a um utilizador autorizado revogar todas as chaves de acesso associadas a uma app de programador específica.
Acerca das chaves de acesso OAuth
Por predefinição, quando o Apigee gera uma chave de acesso OAuth 2.0, a chave tem o formato apresentado abaixo:
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", //--in seconds "developer.email" : "tesla@weathersample.com", "organization_id" : "0", "token_type" : "BearerToken", "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP", "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL", "organization_name" : "myorg", "refresh_token_expires_in" : "0", //--in seconds "refresh_count" : "0" }
Tenha em conta o seguinte:
- O campo application_name contém o UUID da app associada ao token. Se ativar a revogação de chaves de acesso OAuth 2.0 por ID da app, este é o ID da app que usa.
- O campo access_token contém o valor da chave de acesso OAuth 2.0.
- Não existe nenhum campo para o ID do utilizador final no token de acesso OAuth predefinido.
Para revogar chaves de acesso OAuth 2.0 por ID do utilizador final, tem de configurar a política OAuth 2.0
para incluir o ID do utilizador na chave. Depois de configurar a política para incluir o ID do utilizador final no token, este é incluído como o campo app_enduser
, conforme mostrado abaixo:
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "app_enduser" : "6ZG094fgnjNf02EK", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", //--in seconds "developer.email" : "tesla@weathersample.com", "organization_id" : "0", "token_type" : "BearerToken", "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP", "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL", "organization_name" : "myorg", "refresh_token_expires_in" : "0", //--in seconds "refresh_count" : "0" }
Configurar as políticas
Para revogar tokens por ID do utilizador, primeiro tem de configurar a política OAuth 2.0 para adicionar o ID do utilizador ao token de acesso. Ao incluir IDs de utilizadores finais em tokens de acesso, pode revogar tokens por ID de utilizador final.
Para configurar a política de modo a incluir um ID do utilizador final num token de acesso, tem de especificar a variável de entrada que contém o ID do utilizador final. Use a etiqueta <AppEndUser>
para especificar a variável:
<OAuthV2 async="false" continueOnError="false" enabled="true" name="GenerateAccessTokenClient"> <DisplayName>OAuth 2.0.0 1</DisplayName> <ExternalAuthorization>false</ExternalAuthorization> <Operation>GenerateAccessToken</Operation> <SupportedGrantTypes> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> <GrantType>request.queryparam.grant_type</GrantType> <AppEndUser>request.header.appuserID</AppEndUser> <ExpiresIn>960000</ExpiresIn> </OAuthV2>
Segue-se um exemplo de uma política de RevokeOAuthV2
configurada para revogar o acesso por EndUserId
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RevokeOAuthV2 continueOnError="false" enabled="true" name="GetOAuthV2Info-1"> <DisplayName>Get OAuth v2.0 Info 1</DisplayName> <EndUserId ref="request.header.appuserID"></EndUserId> <Cascade>false</Cascade> </RevokeOAuthV2>
Consulte também a Política de Revogação do OAuth V2.
O comando de exemplo seguinte gera um token e transmite o ID do utilizador no cabeçalho appuserID
:
curl -H "appuserID:6ZG094fgnjNf02EK" \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ" \ -X POST "https://apitest.acme.com/oauth/token" \ -d "grant_type=client_credentials"
Pode transmitir informações como parte de um pedido de outras formas. Por exemplo, em alternativa, pode:
- Use uma variável de parâmetro de formulário: request.formparam.appuserID
- Use uma variável de fluxo que forneça o ID do utilizador final