Cette page s'applique à Apigee et à Apigee hybrid.
Consultez la documentation d'Apigee Edge.
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 :
- Méthode : organizations.developers.apps.list, API permettant d'obtenir la liste des applications associées à un développeur
- Méthode : organizations.developers.apps.get, API permettant d'obtenir des détails sur l'application, y compris son identifiant
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">
Le tableau suivant décrit les attributs communs à tous les éléments parents des règles :
Attribut | Description | Par défaut | Presence |
---|---|---|---|
name |
Nom interne de la règle. La valeur de l'attribut Vous pouvez également utiliser l'élément |
N/A | Obligatoire |
continueOnError |
Définissez sur Définissez sur |
false | Facultatif |
enabled |
Définissez sur Définissez sur |
true | Facultatif |
Élément <DisplayName>
Utilisez-le, en plus de l'attribut name
, pour appliquer un libellé à la règle dans l'éditeur de proxys de l'interface de gestion en utilisant un nom différent, en langage naturel.
<DisplayName>Policy Display Name</DisplayName>
Par défaut |
N/A Si vous omettez cet élément, la valeur de l'attribut |
---|---|
Presence | Facultatif |
Type | Chaîne |
É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 |
|
---|---|
Présence |
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 |
faux |
---|---|
Présence |
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 |
|
---|---|
Présence |
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. |
---|---|
Présence |
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
Cette section décrit les codes d'erreur et les messages d'erreur renvoyés et les variables d'erreur définies par Apigee lorsque cette règle déclenche une erreur. Ces informations sont importantes si vous développez des règles de défaillance afin de gérer les pannes. Pour en savoir plus, consultez les pages Ce que vous devez savoir à propos des erreurs liées aux règles et Gérer les pannes.
Erreurs d'exécution
Ces erreurs peuvent se produire lors de l'exécution de la règle. Les noms d'erreur indiqués ci-dessous sont les chaînes attribuées à la variable fault.name
en cas d'erreur. Pour plus d'informations, consultez la section des variables de codes d'erreur ci-dessous.
Code d'erreur | État HTTP | Cause |
---|---|---|
steps.oauth.v2.InvalidFutureTimestamp |
500 | Le code temporel ne doit pas se situer dans le futur. |
steps.oauth.v2.InvalidEarlyTimestamp |
500 | Le code temporel ne peut pas être antérieur au 1er janvier 2014. |
steps.oauth.v2.InvalidTimestamp |
500 | Le code temporel est incorrect. |
steps.oauth.v2.EmptyAppAndEndUserId |
500 | AppdId et EndUserId ne peuvent pas être vides. |
Erreurs de déploiement
Reportez-vous au message indiqué dans l'interface utilisateur pour en savoir plus sur les erreurs de déploiement.
Variables de panne
Ces variables sont définies lorsque cette règle déclenche une erreur au moment de l'exécution.
Variables | Lieu | Exemple |
---|---|---|
fault.name="fault_name" |
fault_name est le nom de l'erreur, tel qu'indiqué dans le tableau Erreurs d'exécution ci-dessus. Le nom d'erreur est la dernière partie du code d'erreur. | fault.name Matches "IPDeniedAccess" |
oauthV2.policy_name.failed |
policy_name est le nom spécifié par l'utilisateur de la règle qui a provoqué l'erreur. | oauthV2.GetTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name est le nom spécifié par l'utilisateur de la règle qui a provoqué l'erreur. | oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id |
oauthV2.policy_name.fault.cause |
policy_name est le nom spécifié par l'utilisateur de la règle qui a provoqué l'erreur. | oauthV2.GetTokenInfo.cause = ClientID is Invalid |
Exemple de réponse d'erreur
{ "fault":{ "faultstring":"Timestamp is in the future.", "detail":{ "errorcode":"steps.oauth.v2.InvalidFutureTimestamp" } } }
Exemple de règle de défaillance
<FaultRule name="RevokeOAuthV2 Faults"> <Step> <Name>AM-InvalidTimestamp</Name> </Step> <Condition>(fault.name = "InvalidFutureTimestamp")</Condition> </FaultRule>