Approuver et révoquer des jetons d'accès

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Révoquer des jetons d'accès et d'actualisation

Dans certains cas, les applications doivent révoquer ou invalider explicitement des jetons, par exemple lorsqu'un utilisateur se déconnecte d'une application compatible avec OAuth. Si vous révoquez un jeton, vous pouvez l'approuver de nouveau à tout moment avant son expiration.

La procédure de révocation des jetons est définie par la spécification de révocation de jetons OAuth 2.0.

Apigee Edge fournit une opération InvalidateToken qui vous permet de configurer un point de terminaison de révocation de jetons dédié. En publiant l'URI de ce point de terminaison, vous permettez aux développeurs d'applications d'invalider les jetons émis par Edge.

Voici un exemple de configuration pour la règle OAuthV2 et l'opération InvalidateToken. Dans ce cas, le jeton d'accès et le jeton d'actualisation associé sont tous deux révoqués. D'un point de vue technique, ils sont tous deux révoqués, car l'option "cascade" est définie sur "true". Pour plus d'informations sur le fonctionnement de l'option "cascade", consultez la section sur les attributs de l'élément Token ci-dessous.

<OAuthV2 name="InvalidateToken">
  <Operation>InvalidateToken</Operation>
  <Tokens>
    <Token type="accesstoken" cascade="true">flow.variable</Token>
  </Tokens>
</OAuthV2>

Élément <Tokens>/<Token>

Identifie la variable de flux qui spécifie le jeton à révoquer. Si les développeurs doivent envoyer une requête de révocation à l'aide d'un paramètre de requête nommé access_token par exemple, la variable de flux correcte sera request.queryparam.access_token. Pour exiger le jeton dans un en-tête HTTP, définissez cette valeur sur request.header.access_token.

Attributs

  • type (obligatoire, chaîne) : type de jeton identifié par la variable spécifiée. Les valeurs acceptées sont accesstoken et refreshtoken:
    • Pour révoquer un jeton d'accès, spécifiez le type "accesstoken".
    • Pour révoquer à la fois le jeton d'accès et le jeton d'actualisation, spécifiez le type "refreshtoken". Lorsqu'il voit le type "refreshtoken", Edge suppose que le jeton est un jeton d'actualisation. Si ce jeton d'actualisation est trouvé, il est révoqué. Si ce jeton d'actualisation est introuvable, Edge vérifie s'il s'agit d'un jeton d'accès. Si le jeton d'accès existe, il est révoqué.

      Remarque : Si vous transmettez un jeton déjà invalidé à une règle InvalidateToken, celle-ci ne renvoie pas d'erreur, contrairement à ce que vous pourriez attendre. Une telle opération n'a aucun effet.
  • cascade (facultatif, booléen, valeur par défaut : true) : cet attribut sert principalement à révoquer un jeton d'actualisation sans révoquer le jeton d'accès associé. Examinons les cas suivants :
    • Révocation d'un jeton d'actualisation uniquement, sans révoquer le jeton d'accès associé. Pour ce faire, définissez le type <Token> sur refreshtoken et définissez "cascade" sur false.
    • Révocation à la fois du jeton d'accès et du jeton d'actualisation. Pour ce faire, définissez le type <Token> sur accesstoken. La valeur de l'option "cascade" peut être true (valeur par défaut) ou false. Si vous la définissez sur true, le jeton d'accès et le jeton d'actualisation sont tous deux révoqués. Si vous la définissez sur false, le jeton d'accès est révoqué et le jeton d'actualisation est inutilisable. Pour en savoir plus, consultez la remarque ci-dessous.
    • Révocation d'un jeton d'accès, sans révoquer le jeton d'actualisation associé. Cette opération n'est pas prise en charge. Pour en savoir plus, consultez la remarque ci-dessous.

Remarque : Pour des raisons de sécurité, si vous révoquez un jeton d'accès, le jeton d'actualisation associé est également révoqué. Par conséquent, vous ne pouvez pas utiliser l'attribut "cascade" pour révoquer uniquement un jeton d'accès. Par exemple, si vous définissez le type <Token> sur accesstoken et que vous définissez cascade=false, le jeton d'accès est révoqué (comme prévu). Toutefois, le jeton d'actualisation associé est inutilisable. Il ne peut pas être utilisé pour actualiser le jeton d'accès révoqué. L'attribut "cascade" sert principalement lorsque vous ne souhaitez révoquer qu'un jeton d'actualisation. Dans ce cas, définissez le type <Token> sur refreshtoken, et définissez cascade=false. Le jeton d'actualisation sera révoqué, mais le jeton d'accès associé restera valide (jusqu'à ce qu'il expire ou soit révoqué). Pour plus d'informations, consultez cette discussion sur le forum de la communauté.

Approuver des jetons d'accès et d'actualisation

Utilisez l'opération "ValidateToken" pour "approuver de nouveau" un jeton révoqué. En d'autres termes, lorsque vous appliquez cette opération, l'état du jeton d'accès ou d'actualisation ciblé passe de "révoqué" à "approuvé". Vous pouvez valider tout jeton révoqué qui n'a pas encore expiré.

<OAuthV2 name="ValidateToken">
  <Operation>ValidateToken</Operation>
  <Tokens>
    <Token type="refreshtoken" cascade="true">flow.variable</Token>
  </Tokens>
</OAuthV2>

Élément <Tokens>/<Token>

Identifie la variable de flux qui spécifie le jeton à valider. Si les développeurs doivent envoyer une requête de validation à l'aide d'un paramètre de requête nommé access_token, par exemple, la variable de flux correcte sera request.queryparam.access_token. Pour exiger le jeton dans un en-tête HTTP, définissez cette valeur sur request.header.access_token.

Attributs

  • type (obligatoire, chaîne) : type de jeton identifié par la variable spécifiée. Les valeurs acceptées sont accesstoken et refreshtoken.
  • cascade (facultatif, booléen) : par défaut, cette option est définie sur true, ce qui entraîne la propagation de la validation aux jetons associés. Ainsi, si elle est appliquée à un jeton d'actualisation, le jeton d'accès associé est également validé. Si elle est appliquée à un jeton d'accès, le jeton d'actualisation associé est également validé. Si vous la définissez sur false, seul le jeton d'accès ou d'actualisation spécifié est validé.