Passer au contenu principal
La date de fin de vie (EOL) de Rules et Hooks sera le 18 novembre 2026, et ils ne sont plus offerts aux nouveaux locataires créés à compter du 16 octobre 2023. Les locataires existants ayant des Hooks actifs conserveront l’accès au produit Hooks jusqu’à sa fin de vie.Nous vous recommandons fortement d’utiliser Actions pour étendre Auth0. Avec Actions, vous avez accès à des informations de type détaillées, à une documentation intégrée et à des packages npm publics, et vous pouvez connecter des intégrations externes qui améliorent votre expérience globale d’extensibilité. Pour en savoir plus sur ce qu’offre Actions, consultez Comprendre le fonctionnement d’Auth0 Actions.Pour faciliter votre migration, nous proposons des guides pour vous aider à migrer de Rules vers Actions et à migrer de Hooks vers Actions. Nous avons également une page dédiée, Move to Actions, qui présente des comparaisons de fonctionnalités, une démonstration d’Actions et d’autres ressources pour vous accompagner dans votre parcours de migration.Pour en savoir plus sur la dépréciation de Rules et Hooks, consultez notre billet de blogue : Preparing for Rules and Hooks End of Life.
Au point d’extensibilité Client Credentials Exchange, les Hooks vous permettent d’exécuter des actions personnalisées lorsqu’un est émis par le point de terminaison POST /oauth/token de l’API d’authentification au moyen du flux d’identifiants du client. Par exemple, vous pouvez empêcher l’émission du jeton, ajouter des revendications personnalisées au jeton d’accès ou modifier ses scopes. Pour en savoir plus, consultez Flux d’identifiants du client. Les Hooks à ce point d’extensibilité sont bloquants (synchrones), ce qui signifie qu’ils s’exécutent dans le cadre du processus du déclencheur et empêchent le reste du pipeline Auth0 de s’exécuter tant que le Hook n’est pas terminé.
Le triggerId du point d’extensibilité Client Credentials Exchange est credentials-exchange. Pour savoir comment créer des Hooks pour ce point d’extensibilité, consultez Créer des Hooks.
Pour en savoir plus sur les autres points d’extensibilité, consultez Points d’extensibilité.

Code initial et paramètres

Lorsque vous créez un Hook exécuté au point d’extensibilité Client Credentials Exchange, l’exemple de code initial ci-dessous peut vous être utile. Les paramètres pouvant être transmis à la fonction Hook et utilisés par celle-ci sont indiqués au début de l’exemple de code.
Veuillez noter :
  • La fonction de rappel (cb) à la fin de l’exemple de code signale la fin de l’exécution et doit être incluse.
  • La ligne access_token.scope = scope garantit que tous les scopes accordés seront présents dans le jeton d’accès. Si vous la supprimez, tous les scopes seront réinitialisés et le jeton ne comprendra que les scopes ajoutés par le script.

Réponse par défaut

Lorsque vous exécutez un Hook au niveau du point d’extensibilité Client Credentials Exchange, l’objet de réponse par défaut est :

Réponse du code initial

Une fois que vous avez personnalisé le code initial avec vos scopes et vos revendications supplémentaires, vous pouvez tester le Hook à l’aide de l’outil d’exécution intégré à l’éditeur de Hook. Cet outil simule un appel au Hook avec le même corps et la même réponse que ceux que vous obtiendriez lors d’un Client Credentials Exchange.
L’exécution du code à l’aide de cet outil nécessite d’enregistrer les modifications, ce qui signifie que le code d’origine sera écrasé.
Lorsque vous exécutez un Hook basé sur le code initial, l’objet de réponse est :

Exemple de script : Ajouter un scope supplémentaire au jeton d’accès

Dans cet exemple, nous utilisons un Hook pour ajouter un scope supplémentaire aux scopes déjà présents dans le jeton d’accès.
Pour en savoir plus, consultez Scopes.

Réponse

Lorsque ce Hook est exécuté, l’objet de réponse est :

Exemple de script : ajouter une revendication au jeton d’accès

Dans cet exemple, nous ajoutons une revendication personnalisée dotée d’un espace de noms ainsi que sa valeur au jeton d’accès. Pour en savoir plus, consultez Create Namespaced Custom Claims. Vous pouvez ajouter les éléments suivants comme revendications au jeton émis :
  • la propriété scope de l’objet de réponse
  • toute propriété dont le nom comporte un espace de noms
Le point d’extensibilité ignore toutes les autres propriétés de l’objet de réponse.
Pour accéder à un Hook Secret configuré à partir d’un hook, utilisez context.webtask.secrets.SECRET_NAME.

Réponse

Lorsque ce Hook est exécuté, l’objet de réponse est :

Exemple de script : lever une erreur ou refuser un jeton d’accès

Dans cet exemple, nous utilisons des objets Error personnalisés pour générer des réponses d’erreur OAuth2. (Pour en savoir plus, consultez OAuth2 RFC - Section 5.2 in the IETF Datatracker.) Si une simple erreur JavaScript est renvoyée dans la fonction de rappel, comme :
Ensuite, lorsque vous demanderez un octroi client_credentials au point de terminaison /oauth/token, Auth0 renverra :
Toutefois, si vous souhaitez un contrôle accru sur la réponse d’erreur OAuth2, vous pouvez plutôt utiliser trois objets Error personnalisés.

InvalidScopeError

Ensuite, lorsque vous demandez un octroi client_credentials au point de terminaison /oauth/token, Auth0 répond :

InvalidRequestError

Ensuite, lorsque vous demandez un octroi client_credentials au point de terminaison /oauth/token, Auth0 renvoie :

ServerError

Ensuite, lorsque vous demandez un octroi client_credentials au point de terminaison /oauth/token, Auth0 répond :
Pour le moment, le comportement de la classe JavaScript intégrée Error et de ServerError est identique, mais la classe ServerError vous permet de préciser explicitement l’erreur OAuth2 qui sera renvoyée.

En savoir plus