- event.refresh_token: Fournit des renseignements pertinents sur les
refresh_tokensexistants, notammentid,created_at,expires_at,idle_expires_at,clients_id, les renseignements surdevice, commeASN,IPetUser_agent, ainsi que, pour les flux dans le navigateur,session_id. Cet objet est renseigné par les flux d’échange de jeton d’actualisation. - api.refreshToken: Vous permet de gérer les jetons d’actualisation existants en révoquant des sessions ou en modifiant les dates d’expiration.
event.refresh_token pour examiner la propriété last_exchange_at et évaluer les risques associés aux transactions en cours. Vous pouvez aussi combiner l’objet event.refresh_token avec d’autres objets d’événement, comme event.authentication.
Vous pouvez ensuite utiliser l’objet api.refreshToken pour définir les dates d’expiration du jeton d’actualisation ou révoquer le jeton d’actualisation.
Pour en savoir plus sur ces objets, consultez :
- Event object : Découvrez l’objet Event du jeton d’actualisation et ses propriétés.
- API object : Découvrez l’objet API du jeton d’actualisation et ses méthodes.
Révoquer des jetons d’actualisation avec Actions
La méthode api.refreshToken.revoke(reason) de post-login vous permet de réagir aux risques associés à une transaction. La révocation du jeton d’actualisation invalide ce jeton, renvoie un code d’état HTTP 403 pour rejeter la transaction en cours et consigne un événement de révocation de jeton d’actualisation dans les journaux du tenant (srrt).
Si vous souhaitez utiliser la méthode
api.refreshToken.revoke(reason), assurez-vous que l’objet event.refresh_token existe.Surveiller les événements de journal liés à la révocation
L’opération de révocation ajoute l’événement de journal suivant dans vos journaux du tenant : Un code d’événementsrrt indiquant qu’un jeton d’actualisation a été révoqué.
Si le jeton d’actualisation est associé à une session authentifiée antérieurement, le journal comprendra une référence à cette session authentifiée dans l’attribut session_id.
Modifier les dates d’expiration des jetons d’actualisation avec Actions
Vous pouvez modifier les dates d’expiration des jetons d’actualisation à l’aide des méthodes post-login suivantes :- api.refreshToken.setExpiresAt(absolute) vous permet de définir une nouvelle date d’expiration absolue pour un jeton d’actualisation donné.
- api.refreshToken.setIdleExpiresAt(idle) vous permet de définir une nouvelle date d’expiration liée au délai d’inactivité pour un jeton d’actualisation donné.
- l’organisation d’un utilisateur
- la connexion Auth0 d’un utilisateur
- l’appartenance à un groupe d’un utilisateur donné ou son profil
- l’évaluation des risques
- tout autre critère dynamique disponible lors de l’exécution de l’Action
Les méthodes
api.refreshToken.setExpiresAt(absolute) et api.refreshToken.setIdleExpiresAt(idle) permettent de définir l’expiration d’un jeton d’actualisation avant son émission, ou de modifier l’expiration d’un jeton d’actualisation existant dans le cadre d’un flux d’échange de jeton d’actualisation.Les méthodes api.refreshToken.setExpiresAt(absolute) et api.refreshToken.setIdleExpiresAt(idle) convertissent les jetons d’actualisation sans expiration en jetons d’actualisation avec expiration, en utilisant comme valeurs maximales les paramètres par défaut de l’expiration des jetons d’actualisation.La méthode api.refreshToken.setIdleExpiresAt(idle) définit le délai d’inactivité des jetons d’actualisation. Si la méthode n’est pas appelée à chaque échange réussi, le délai d’inactivité sera remplacé par les paramètres de durée de vie du jeton d’actualisation de l’application.Limitations
-
Les jetons d’actualisation émis le 21-09-2023 ou après cette date (le 22-02-2024 pour les tenants de la région US-3) contiennent la propriété d’ID de session (
session_id) avec la valeur appropriée. Les jetons d’actualisation émis avant cette date contiennent cette propriété avec une valeurnull. -
Les jetons d’actualisation émis avant la publication de la méthode d’API post-login
api.refreshToken.revoke(reason)ne contiendront pas l’informationevent.refresh_token.device. -
Les jetons d’actualisation sans expiration ou qui n’ont pas été échangés ne contiendront pas la propriété
event.refresh_token.last_exchanged_at. -
Pour des raisons de sécurité, les délais d’expiration absolus et d’inactivité ne peuvent pas être définis au-delà des paramètres de jeton d’actualisation de l’application définis dans les expirations des jetons d’actualisation. Si vous essayez de définir une date qui dépasse les paramètres d’expiration, les méthodes d’API mettront à jour la valeur jusqu’aux expirations des jetons d’actualisation et consigneront un événement d’avertissement (
w) dans les journaux du tenant. -
api.refreshToken.setExpiresAt()etapi.refreshToken.setIdleExpiresAt()ne peuvent que réduire leur durée de vie respective à partir des valeurs actuelles. Elles ne peuvent ni la prolonger ni l’augmenter.
Cas d’utilisation : Révoquer un jeton d’actualisation
Vous pouvez utiliser Actions pour configurer des détections de risque et révoquer des jetons d’actualisation à l’aide de la méthodeapi.refreshToken.revoke(reason) et des objets d’événement.
Révoquer les jetons d’actualisation en raison d’ImpossibleTravel
Vous pouvez utiliser l’objet assessments d’ pour déterminer si un utilisateur se connecte à partir d’un emplacement indiquant un ImpossibleTravel, puis révoquer le jeton d’actualisation actuel associé à la transaction.event.authentication.ImpossibleTravel.code est égal à la propriété impossible_travel_from_last_login. Si la valeur est true, l’Action appelle api.refreshToken.revoke() pour :
- Rejeter la transaction
- Révoquer le jeton d’actualisation
- Retourner une réponse d’erreur 403 access_denied
- Émettre l’erreur « Jeton d’actualisation révoqué en raison d’un déplacement impossible »
Révoquer des jetons d’actualisation en raison d’une liaison à l’adresse IP
Si vous utilisez les propriétés de l’objet post-loginevent.refresh_token.device.initial_ip et event.request.ip pour vous assurer qu’une transaction de jeton d’actualisation demeure associée à la même adresse IP pendant toute sa durée. Dans ce scénario, tout changement d’adresse IP est considéré comme un risque, et un nouveau jeton d’actualisation est requis.
event.refresh_token.device.initial_ip et event.request.ip. L’Action détermine si l’adresse IP de la transaction a changé. Si true, l’Action appelle api.refreshToken.revoke() pour :
- Rejeter la transaction
- Révoquer le jeton d’actualisation
- Retourner une réponse d’erreur
403access_denied - Émettre l’erreur «
Invalid IP change»
request.asn et event.refresh_token.device.initial_asn pour surveiller les changements d’ASN plutôt que les changements d’adresse IP.
Cas d’utilisation : Personnaliser les dates d’expiration des jetons d’actualisation
Vous pouvez utiliser Actions pour personnaliser la durée de vie du jeton d’actualisation et ses dates d’expiration liées à l’inactivité. Plus précisément, vous pouvez configurer les dates d’expiration absolue et d’inactivité du jeton d’actualisation pour une transaction donnée à l’aide des méthodes post-loginapi.refreshToken.setExpiresAt(absolute) et api.refreshToken.setIdleExpiresAt(idle).
Personnaliser la date d’expiration absolue du jeton d’actualisation en fonction de l’organisation
Vous pouvez utiliser une action Post Login pour définir la durée de vie d’un jeton d’actualisation par organisation. L’exemple ci-dessous utilise les métadonnéesrefresh_token_timeout de l’organisation pour définir la date d’expiration du jeton d’actualisation.
- Jetons nouvellement émis :
current_timeplusorganization_refresh_token_lifetime - Jetons existants :
event.refresh_token.created_atplusorganization_refresh_token_lifetime
Personnaliser le délai d’inactivité du jeton d’actualisation selon le rôle d’appartenance
Vous pouvez utiliser une action Post Login pour définir le délai d’inactivité d’un jeton d’actualisation à l’aide de l’application et des métadonnées utilisateur. L’exemple ci-dessous utilise les rôles dans les métadonnées utilisateur pour déterminer le rôle d’appartenance de l’utilisateur, et les métadonnées de l’application pour définir le délai d’inactivité attendu du jeton d’actualisation.current_time plus refresh_token_idle_timeout. Notez que nous modifions le délai d’expiration à la fois pour les nouveaux jetons émis et pour les jetons existants lors d’un échange de jeton d’actualisation.