NOTA: Algunos aspectos de este producto están en versión Beta. Las opciones de instalación híbrida son GA. Para unirte al programa Beta, comunícate con tu representante de Apigee.

Revoca la política de OAuth V2

Qué

Revoca los tokens de acceso de OAuth2 asociados con un ID de app de desarrollador, un ID de usuario final de la app o ambos.

Usa la política de OAuthv2 para generar un token de acceso de OAuth 2.0. Un token generado por Apigee tiene el siguiente formato:

{
  "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"
}

El elemento application_name contiene el ID de la app de desarrollador asociado con el token.

De forma predeterminada, Apigee no incluye el ID de usuario final en el token. Puedes configurar Apigee para que incluya el ID de usuario final si agregas el elemento <AppEndUser> a la política de OAuthv2:

<OAuthV2 name="GenerateAccessTokenClient">
    <Operation>GenerateAccessTokenV/Operation>
    ...
    <AppEndUser>request.queryparam.app_enduser</AppEndUser>
</OAuthV2>

En este ejemplo, pasa el ID de usuario final a la política de OAuthv2 en un parámetro de consulta llamado app_enduser. Luego, se incluye el ID de usuario final en el token en el elemento app_enduser:

{
 "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"
}

Revoca por ID de app de desarrollador

Revoca los tokens de acceso de OAuth2 asociados con un ID de app de desarrollador. Todos los tokens de acceso de OAuth2 que genera Apigee incluyen el ID de la aplicación de desarrollador asociada con el token. Puedes revocar tokens basados en ese ID de app.

A fin de obtener una lista de ID de app para un desarrollador específico, usa lo siguiente:

Revocar por ID de usuario final de la app

Revoca los tokens de acceso de OAuth2 asociados con un ID de usuario final específico de la app. Este es el token asociado con el ID del usuario para el que se emitieron los tokens.

De forma predeterminada, no hay un campo para el ID de usuario final en el token de acceso de OAuth. Para habilitar la revocación de los tokens de acceso de OAuth 2.0 por ID de usuario final, debes configurar la política de OAuthv2 para incluir el ID de usuario en el token, como se muestra arriba.

Para obtener un ID de usuario final de la app, usa el método: organizations.developers.get.

Ejemplos

En los siguientes ejemplos se usa la política Revoke OAuth V2 para revocar los tokens de acceso de OAuth2.

ID de la aplicación de desarrollador

Para revocar los tokens de acceso por ID de app de desarrollador, usa el elemento <AppId> en tu política.

En el siguiente ejemplo, se espera encontrar el ID de la app de desarrollador del token de acceso en un parámetro de consulta llamado app_id:

<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy">
  <DisplayName>Revoke OAuth v2.0-1</DisplayName>
  <AppId ref="request.queryparam.app_id"></AppId>
</RevokeOAuthV2>

Con el ID de la app para desarrolladores, la política revoca el token de acceso.

Revoca antes de la marca de tiempo

Para revocar los tokens de acceso por ID de app de desarrollador que se generaron antes de una fecha y hora específicas, usa el elemento <RevokeBeforeTimestamp> en tu política. <RevokeBeforeTimestamp> especifica la hora de época UTC en milisegundos. Se revocarán todos los tokens emitidos antes de ese momento.

En el siguiente ejemplo, se revocan los tokens de acceso de una app para desarrolladores creada antes del 1 de julio de 2019:

<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy">
  <DisplayName>Revoke OAuth v2.0-1</DisplayName>
  <AppId ref="request.queryparam.app_id"></AppId>
  <RevokeBeforeTimestamp>1561939200000</RevokeBeforeTimestamp>
</RevokeOAuthV2>

El elemento <RevokeBeforeTimestamp> toma un número entero de 64 bits (de largo) que representa la cantidad de milisegundos transcurridos desde la medianoche del 1 de enero de 1970 UTC.


Referencia de elementos

En la referencia del elemento, se describen los elementos y atributos de la política RevokeOAuthV2.

<?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>
  <AppId ref="variable"></AppId>
  <EndUserId ref="variable"></EndUserId>
  <RevokeBeforeTimestamp ref="variable"></RevokeBeforeTimestamp>
  <Cascade>false</Cascade>
</RevokeOAuthV2>

Atributos <RevokeOAuthV2>

<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">

En la siguiente tabla, se describen los atributos que son comunes a todos los elementos principales de las políticas:

Atributo Descripción Predeterminada Presencia
name

El nombre interno de la política. El valor del atributo name puede contener letras, números, espacios, guiones, guiones bajos y puntos. Este valor no puede superar los 255 caracteres.

De forma opcional, usa el elemento <DisplayName> para etiquetar la política en el editor de proxy de la IU de administración con un nombre de lenguaje natural diferente.

N/A Obligatorio
continueOnError

Configúralo como false para mostrar un error cuando una política falla. Este es el comportamiento previsto para la mayoría de las políticas.

Configúralo como true para continuar con la ejecución del flujo incluso después de que una política falle.

falso Opcional
enabled

Configúralo como true para aplicar la política.

Configúralo como false para desactivar la política. La política no se aplicará incluso si permanece adjunta a un flujo.

true Opcional

Elemento <DisplayName>

Se usan además del atributo name para etiquetar la política en el editor de proxy de la IU de administración con un nombre de lenguaje natural diferente.

<DisplayName>Policy Display Name</DisplayName>
Predeterminada

N/A

Si omites este elemento, se usa el valor del atributo name de la política.

Presencia Opcional
Tipo String

Elemento <AppId>

Especifica el ID de la app de desarrollador de los tokens que se deben revocar. Pasa una variable que contenga el ID de la app o un ID de la app literal.

<AppId>appIdString</AppId>

or:

<AppId ref="request.queryparam.app_id"></AppId>
Predeterminada

request.formparam.app_id (una x-www-form-urlencoded y especificado en el cuerpo de la solicitud)

Presencia

Opcional

Tipo String
Valores válidos

Una variable de flujo que contiene una string de ID de app o una string literal.

Elemento <Cascade>

Configúralo como true para revocar el token de actualización junto con el token de acceso. Si es false, solo se revoca el token de acceso y el token de actualización no se modifica.

<Cascade>false<Cascade>
Predeterminada

falso

Presencia

Opcional

Tipo booleano
Valores válidos true o bien false

Elemento <EndUserId>

Especifica el ID de usuario final de la app del token que se revocará. Pasa una variable que contenga el ID de usuario o una string de token literal.

<EndUserId>userIdString</EndUserId>

or:

<EndUserId ref="request.queryparam.access_token"></EndUserId>
Predeterminada

request.formparam.enduser_id (una x-www-form-urlencoded y especificado en el cuerpo de la solicitud)

Presencia

Opcional

Tipo String
Valores válidos

Una variable de flujo que contiene una string de ID de usuario o una string literal.

Elemento <RevokeBeforeTimestamp>

Revoca tokens que se hayan emitido antes de la marca de tiempo Este elemento funciona con <AppId> y <EndUserId> para permitirte revocar tokens antes de una hora específica. El valor predeterminado es la hora a la que se ejecuta la política.

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

<RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
Predeterminada

La marca de tiempo en que se ejecuta la política.

Presencia

Opcional

Tipo Número entero de 64 bits (de largo) que representa la cantidad de milisegundos transcurridos desde la medianoche del 1 de enero de 1970 UTC.
Valores válidos

Una variable de flujo que contiene una marca de tiempo o una marca de tiempo literal La marca de tiempo no puede ser posterior a la fecha actual y no puede ser anterior al 1 de enero de 2014.

Variables de flujo

La política RevokeOAuthV2 no configura variables de flujo.

Referencia de errores

En esta sección, se describen los códigos de falla y los mensajes de error que se muestran, y las variables de falla que establece Apigee cuando esta política activa un error. Esta información es importante para saber si estás desarrollando reglas de fallas con el propósito de manejar fallas. Para obtener más información, consulta Qué debes saber sobre los errores de políticas y Cómo solucionar fallas.

Errores de entorno de ejecución

Estos errores pueden producirse cuando se ejecuta la política. Los nombres de error que se muestran a continuación son las strings que se asignan a la variable fault.name cuando se produce un error. Consulta la sección Variables de falla a continuación para obtener más detalles.

Código de falla Estado de HTTP Causa
steps.oauth.v2.InvalidFutureTimestamp 500 La marca de tiempo no puede ser futura.
steps.oauth.v2.InvalidEarlyTimestamp 500 La marca de tiempo no puede ser anterior al 1 de enero de 2014.
steps.oauth.v2.InvalidTimestamp 500 La marca de tiempo no es válida
steps.oauth.v2.EmptyAppAndEndUserId 500 AppdId y EndUserId no pueden estar vacíos.

Errores en la implementación

Consulta el mensaje informado en la IU para obtener información sobre los errores de implementación.

Variables con fallas

Estas variables se configuran cuando esta política activa un error en el entorno de ejecución.

Variables Donde Ejemplo
fault.name="fault_name" fault_name es el nombre de la falla, como se indica en la tabla de Errores del entorno de ejecución anterior. El nombre de la falla es la última parte del código de la falla. fault.name Matches "IPDeniedAccess"
oauthV2.policy_name.failed policy_name es el nombre especificado por el usuario de la política que generó la falla. oauthV2.GetTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name es el nombre especificado por el usuario de la política que generó la falla. oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id
oauthV2.policy_name.fault.cause policy_name es el nombre especificado por el usuario de la política que generó la falla. oauthV2.GetTokenInfo.cause = ClientID is Invalid

Ejemplo de respuesta de error

{
   "fault":{
      "faultstring":"Timestamp is in the future.",
      "detail":{
         "errorcode":"steps.oauth.v2.InvalidFutureTimestamp"
      }
   }
}

Ejemplo de regla de falla

<FaultRule name="RevokeOAuthV2 Faults">
    <Step>
        <Name>AM-InvalidTimestamp</Name>
    </Step>
    <Condition>(fault.name = "InvalidFutureTimestamp")</Condition>
</FaultRule>

Temas relacionados