Révoquer la règle OAuth V2

Cette page s'applique à Apigee et à Apigee hybrid.

Consultez la documentation d'Apigee Edge.

icône de la règle

Présentation

Révoque les jetons d'accès OAuth 2 associés à un ID d'application de développeur et/ou à un ID d'utilisateur final de l'application.

Cette règle est une règle extensible et son utilisation peut avoir des conséquences sur le coût ou l'utilisation, en fonction de votre licence Apigee. Pour en savoir plus sur les types de règles et les implications en termes d'utilisation, consultez la section Types de règles.

Utilisez la règle OAuth V2 pour générer un jeton d'accès OAuth 2.0. Un jeton généré par Apigee a le format suivant :

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

L'élément application_name contient l'ID d'application de développeur associé au jeton.

Par défaut, Apigee n'inclut pas l'ID de l'utilisateur final dans le jeton. Vous pouvez configurer Apigee de manière à inclure l'ID de l'utilisateur final en ajoutant l'élément <AppEndUser> à la règle OAuthv2 :

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

Dans cet exemple, transmettez l'ID de l'utilisateur final à la règle OAuth V2 dans un paramètre de requête nommé app_enduser. L'ID de l'utilisateur final est ensuite inclus dans le jeton de l'élément 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"
}

Révoquer par l'ID de l'application de développeur

Révoquez les jetons d'accès OAuth2 associés à un ID d'application de développeur. Tous les jetons d'accès OAuth2 générés par Apigee incluent l'ID de l'application de développeur associée au jeton. Vous pouvez ensuite révoquer les jetons basés sur cet ID d'application.

Pour obtenir la liste des ID d'applications pour un développeur spécifique, utilisez la commande suivante :

Révoquer par l'ID de l'utilisateur final de l'application

Révoquez les jetons d'accès OAuth2 associés à l'ID d'un utilisateur final d'une application spécifique. Il s'agit du jeton associé à l'ID de l'utilisateur pour lequel les jetons ont été émis.

Par défaut, il n'existe pas de champ pour l'ID de l'utilisateur final dans le jeton d'accès OAuth. Pour activer la révocation des jetons d'accès OAuth 2.0 par l'ID de l'utilisateur final, vous devez configurer la règle OAuth v2 pour inclure l'ID de l'utilisateur dans le jeton, comme indiqué ci-dessus.

Pour obtenir un ID d'utilisateur final d'application, utilisez la Méthode : organizations.developers.get.

Exemples

Les exemples suivants utilisent la règle Révoquer OAuth V2 pour révoquer les jetons d'accès OAuth 2.

ID de l'application de développeur

Pour révoquer les jetons d'accès par ID d'application de développeur, utilisez l'élément <AppId> dans votre règle.

L'exemple suivant s'attend à trouver l'ID d'application de développeur du jeton d'accès dans un paramètre de requête nommé app_id :

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

Selon l'ID de l'application de développeur, la règle révoque le jeton d'accès.

Révoquer avant le code temporel

Pour révoquer les jetons d'accès par l'ID d'application de développeur générés avant une date et une heure spécifiques, utilisez l'élément <RevokeBeforeTimestamp> dans votre règle. <RevokeBeforeTimestamp> spécifie une epoch UTC en millisecondes. Tous les jetons émis avant cette heure sont révoqués.

L'exemple suivant révoque les jetons d'accès pour une application de développeur créée avant le 1er juillet 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>

L'élément <RevokeBeforeTimestamp> utilise un entier de 64 bits (long) représentant le nombre de millisecondes écoulées depuis minuit, le 1er janvier 1970 UTC.


Documentation de référence des éléments

La documentation de référence des éléments décrit les éléments et les attributs de la règle 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>

Attributs <RevokeOAuthV2>

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

The following table describes attributes that are common to all policy parent elements:

Attribute Description Default Presence
name

The internal name of the policy. The value of the name attribute can contain letters, numbers, spaces, hyphens, underscores, and periods. This value cannot exceed 255 characters.

Optionally, use the <DisplayName> element to label the policy in the management UI proxy editor with a different, natural-language name.

N/A Required
continueOnError

Set to false to return an error when a policy fails. This is expected behavior for most policies.

Set to true to have flow execution continue even after a policy fails.

false Optional
enabled

Set to true to enforce the policy.

Set to false to turn off the policy. The policy will not be enforced even if it remains attached to a flow.

true Optional

<DisplayName> element

Use in addition to the name attribute to label the policy in the management UI proxy editor with a different, natural-language name.

<DisplayName>Policy Display Name</DisplayName>
Default

N/A

If you omit this element, the value of the policy's name attribute is used.

Presence Optional
Type String

Élément <AppId>

Spécifie l'ID d'application de développeur des jetons à révoquer. Transmettez une variable contenant l'ID de l'application ou un ID d'application littéral.

<AppId>appIdString</AppId>

or:

<AppId ref="request.queryparam.app_id"></AppId>
Par défaut

request.formparam.app_id (un x-www-form-urlencoded et spécifié dans le corps de la requête)

Presence

Facultatif

Type Chaîne
Valeurs valides

Une variable de flux contenant une chaîne d'ID d'application ou une chaîne littérale.

Élément <Cascade>

Si la valeur est true et que vous disposez d'un jeton d'accès opaque traditionnel, le jeton d'actualisation et le jeton d'accès sont révoqués si <AppId> ou <EndUserId> correspondent. Si vous disposez d'un jeton d'accès JWT, seul le jeton d'actualisation émis avec le jeton d'accès est révoqué. De par leur conception, les jetons d'accès JWT ne peuvent pas être révoqués. Si la valeur est false, seul le jeton d'accès est révoqué, et le jeton d'actualisation reste inchangé. Le même comportement ne s'applique qu'aux jetons d'accès opaques. Les jetons d'accès JWT ne peuvent pas être révoqués.

<Cascade>false<Cascade>
Par défaut

false

Presence

Facultatif

Type Booléen
Valeurs valides true ou false

Élément <EndUserId>

Spécifie l'ID de l'utilisateur final de l'application du jeton à révoquer. Transmettez une variable contenant l'ID utilisateur ou une chaîne de jeton littérale.

<EndUserId>userIdString</EndUserId>

or:

<EndUserId ref="request.queryparam.access_token"></EndUserId>
Par défaut

request.formparam.enduser_id (un x-www-form-urlencoded et spécifié dans le corps de la requête)

Presence

Facultatif

Type Chaîne
Valeurs valides

Une variable de flux contenant une chaîne d'ID utilisateur ou une chaîne littérale.

Élément <RevokeBeforeTimestamp>

Révoquez les jetons émis avant l'horodatage. Cet élément fonctionne avec <AppId> et <EndUserId> pour vous permettre de révoquer des jetons avant une heure spécifique. La valeur par défaut correspond à l'heure d'exécution de la règle.

<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp>

or:

<RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
Par défaut

Le code temporel d'exécution de la règle.

Presence

Facultatif

Type Nombre entier de 64 bits (long) représentant le nombre de millisecondes écoulées depuis minuit, le 1er janvier 1970 UTC.
Valeurs valides

Variable de flux contenant un code temporel, ou un code temporel littéral. Le code temporel ne peut pas être ultérieur et ne peut pas être antérieur au 1er janvier 2014.

Variables de flux

La règle RevokeOAuthV2 ne définit pas les variables de flux.

Informations de référence sur les erreurs

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes. The error names shown below are the strings that are assigned to the fault.name variable when an error occurs. See the Fault variables section below for more details.

Fault code HTTP status Cause
steps.oauth.v2.InvalidFutureTimestamp 500 Timestamp cannot be in the future.
steps.oauth.v2.InvalidEarlyTimestamp 500 Timestamp cannot be earlier than January 1, 2014.
steps.oauth.v2.InvalidTimestamp 500 Timestamp is invalid.
steps.oauth.v2.EmptyAppAndEndUserId 500 Both AppdId and EndUserId cannot be empty.

Deployment errors

Refer to the message reported in the UI for information about deployment errors.

Fault variables

These variables are set when this policy triggers an error at runtime.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "IPDeniedAccess"
oauthV2.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. oauthV2.GetTokenInfo.failed = true
oauthV2.policy_name.fault.name policy_name is the user-specified name of the policy that threw the fault. oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id
oauthV2.policy_name.fault.cause policy_name is the user-specified name of the policy that threw the fault. oauthV2.GetTokenInfo.cause = ClientID is Invalid

Example error response

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

Example fault rule

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

Articles associés