Créez votre premier Action Module Auth0 dans le Dashboard Auth0 en créant le module, en ajoutant des secrets et des dépendances NPM, en publiant une version et en l’utilisant pour envoyer des logs à un service externe.
Auth0 retourne le nouvel Action Module, y compris son id, que vous utiliserez pour référencer le module aux étapes suivantes.
Les Actions Modules ne sont pas exposés nativement par l’ensemble de commandes auth0-cli; utilisez donc auth0 api pour appeler directement la Management API. Certains appels nécessitent des permissions supplémentaires — au besoin, exécutez d’abord auth0 login --scopes create:actions,read:actions,update:actions.
Chaque module d’action peut contenir des paires clé-valeur secrètes. Utilisez-les pour stocker des renseignements sensibles, comme des clés API, des certificats et des valeurs qui peuvent varier d’un environnement à l’autre.
Dashboard
Management API
Auth0 CLI
Terraform
Auth0 Déployer CLI
Ensuite, enregistrez l’URL du service externe comme Secret.
Sélectionnez l’icône dans la barre latérale gauche de l’éditeur de code.
Sélectionnez Add Secret.
Saisissez SERVICE_URL dans le champ Name.
Saisissez l’URL du service externe dans le champ Value.
Sélectionnez Create.
Auth0 ajoute le Secret à la liste des Secrets du module d’action.
Ensuite, enregistrez l’URL du service externe comme Secret. Appelez Update an Actions Module avec la permission update:actions :
Chaque appel PATCH remplace l’ensemble du tableau secrets dans le brouillon du module. Incluez donc tous les Secrets dont le module a besoin, et non seulement celui que vous ajoutez.
Ensuite, enregistrez l’URL du service externe comme Secret. Appelez Update an Actions Module avec auth0 api :
Chaque appel remplace l’ensemble du tableau secrets dans le brouillon du module; incluez donc tous les Secrets dont le module a besoin, et non seulement celui que vous ajoutez.
Ensuite, enregistrez l’URL du service externe comme Secret à l’aide d’un bloc secrets :
action-modules/logger.tf
resource "auth0_action_module" "logger" { name = "logger" code = file("${path.module}/action-modules/logger/code.js") secrets { name = "SERVICE_URL" value = "https://example.com/logs" }}
Nous ne prenons pas en charge la gestion partielle des secrets. Chaque terraform apply envoie la liste complète des secrets définis sur la ressource.
Ensuite, enregistrez l’URL du service externe comme Secret.
YAML
Directory (JSON)
Ajoutez un tableau secrets à l’entrée du module dans tenant.yaml :
Le paramètre fictif ##SERVICE_URL## est résolu par remplacement de mots-clés au moment du déploiement, de sorte que la valeur réelle ne se trouve jamais dans votre fichier de configuration.
Étape supplémentaire : Répétez les étapes pour enregistrer un API_KEY comme Secret que vous enverrez dans les en-têtes au service externe avec chaque requête.
Une fois un Secret créé, Auth0 n’en révèle jamais la valeur. Auth0 chiffre tous les Secrets et les stocke de façon sécurisée.
Chaque Secret de module d’action est indépendant des autres Modules d’action et des Secrets des Actions.
Utilisez les Secrets dans le module d’action en saisissant actions.secrets.[secret_key].
3
Ajouter de la logique personnalisée
Maintenant, ajoutez le code suivant à votre module d’action.
Vous pouvez enregistrer un brouillon de votre Action Module.
Dashboard
Management API
Auth0 CLI
Terraform
Auth0 Deploy CLI
Sélectionnez Save Draft.
Il n’existe pas d’appel “save” distinct. Chaque requête Update an Actions Module effectuée aux étapes précédentes a déjà enregistré vos modifications dans le brouillon du module. Vous pouvez le confirmer avec Get an Actions Module :
Le champ all_changes_published de la réponse est false, ce qui confirme que le brouillon contient des modifications non publiées.
Il n’existe pas d’appel “save” distinct. Chaque requête auth0 api patch actions/modules/{moduleId} effectuée aux étapes précédentes a déjà enregistré vos modifications dans le brouillon du module. Vous pouvez le confirmer avec Get an Actions Module :
auth0 api get actions/modules/{moduleId}
Le champ all_changes_published de la réponse est false, ce qui confirme que le brouillon contient des modifications non publiées.
Il n’existe pas d’étape “save” distincte. La commande terraform apply que vous avez exécutée aux étapes précédentes a déjà mis à jour le brouillon du module. Le brouillon n’a aucun effet sur les Actions qui utilisent déjà une version publiée du module.
Définissez all_changes_published à false dans l’entrée du module.
curl -L -X POST 'https://{yourDomain}/api/v2/actions/modules/{moduleId}/versions' \ -H 'Authorization: Bearer {yourMgmtApiAccessToken}'
Auth0 retourne la nouvelle version d’Action Module, y compris son id et son version_number. Vous référencerez cet id comme module_version_id lorsque vous ajouterez le module à une Action.
auth0 api post actions/modules/{moduleId}/versions
Auth0 retourne la nouvelle version d’Action Module, y compris son id et son version_number. Vous référencerez cet id comme module_version_id lorsque vous ajouterez le module à une Action.
Définissez publish à true sur la ressource, puis exécutez terraform apply :
action-modules/logger.tf
resource "auth0_action_module" "logger" { name = "logger" code = file("${path.module}/action-modules/logger/code.js") publish = true secrets { name = "SERVICE_URL" value = "https://example.com/logs" }}
La publication crée une nouvelle version d’Action Module à partir du brouillon actuel. Terraform expose l’ID de la version publiée dans l’attribut calculé version_id, que vous référencez depuis les ressources auth0_action sous le nom module_version_id.
Définissez all_changes_published à true dans l’entrée du module.
Cette opération publie une nouvelle version d’Action Module à partir du brouillon actuel, après l’application de vos changements.
Vous pouvez maintenant utiliser l’Action Module dans une Action.
Chaque Action doit faire explicitement référence à la version d’Action Module, ce qui empêche les mises à niveau automatiques susceptibles d’introduire des erreurs inattendues.
6
Ajouter l’Action Module à une Action
Ensuite, ajoutez le module d’action dans une action.
auth0 actions update n’a aucun indicateur pour les Action Modules; appelez donc directement Update an Action avec auth0 api, en utilisant les module_id et module_version_id du module obtenus à l’étape précédente :
Ajoutez un bloc modules à la ressource auth0_action, en y référençant le module et sa version publiée. Laissez l’attribut code pointer vers le fichier de code propre à l’Action :
actions/my-action.tf
resource "auth0_action" "my_action" { name = "my-action" code = file("${path.module}/actions/my-action/code.js") modules { module_id = auth0_action_module.logger.id module_version_id = auth0_action_module.logger.version_id } supported_triggers { id = "post-login" version = "v3" }}
Ajoutez un tableau modules à la configuration de l’Action, en référençant le module par son nom et son numéro de version.
YAML
Directory (JSON)
Ajoutez le tableau modules à l’entrée de l’Action dans tenant.yaml :
{ "code": "const logger = require('actions:logger');\n\nexports.onExecutePostLogin = async (event, api) => {\n await logger.sendLog('logger_success', 'Your Action was able to use the Logger Action Module');\n};"}
curl -L -X POST 'https://{yourDomain}/api/v2/actions/actions/{actionId}/deploy' \ -H 'Authorization: Bearer {yourMgmtApiAccessToken}'
Mettez à jour le fichier de code de l’Action situé à actions/my-action/code.js avec l’instruction require et l’appel à logger.sendLog :
actions/my-action/code.js
const logger = require('actions:logger');exports.onExecutePostLogin = async (event, api) => { await logger.sendLog('logger_success', 'Your Action was able to use the Logger Action Module');};
Mettez à jour le fichier de code de l’Action situé à actions/my-action/code.js avec l’instruction require et l’appel à logger.sendLog :
actions/my-action/code.js
const logger = require('actions:logger');exports.onExecutePostLogin = async (event, api) => { await logger.sendLog('logger_success', 'Your Action was able to use the Logger Action Module');};
Définissez deploy à true sur la ressource auth0_action, puis exécutez terraform apply :
Définir deploy = true crée immédiatement une nouvelle version déployée de l’Action.
Ajoutez l’instruction require et l’appel à logger.sendLog dans actions/my-action/code.js :
actions/my-action/code.js
const logger = require('actions:logger');exports.onExecutePostLogin = async (event, api) => { await logger.sendLog('logger_success', 'Your Action was able to use the Logger Action Module');};
Comme pour les secrets, chaque appel PATCH remplace l’intégralité du tableau dependencies; incluez donc toutes les dépendances dont le module a besoin.
Utilisez les dépendances répertoriées dans le Action Module en les important avec require('[package-name]').
Lorsque vous enregistrez cette Action, Auth0 résout la version la plus récente de votre dépendance et la remplace par un numéro de version précis afin d’éviter que de futures mises à jour du package ne brisent votre Action.Vous pouvez fournir une version précise au lieu de latest.
Assistant
Responses are generated using AI and may contain mistakes.