Actions
Les Actions Logto vous permettent d’exécuter du JavaScript de confiance à des points précis du flux d’authentification. Une action s’exécute de manière synchrone : la requête d’authentification attend le script, et le résultat du script peut mettre à jour l’utilisateur ou déterminer si le flux continue.
Les Actions sont utiles lorsque la décision doit être prise à l’intérieur du flux d’authentification. Les cas d’usage courants incluent :
- La migration des utilisateurs et des mots de passe depuis un système d’identité hérité lors de leur première connexion.
- L’actualisation du profil utilisateur ou des données spécifiques à l’application avant que Logto ne termine une connexion.
- L’appel à un service externe et l’application de son résultat à l’utilisateur Logto.
Les Actions sont disponibles dans les offres Logto Cloud Enterprise et dans Logto OSS auto-hébergé (v1.43.0 et versions ultérieures).
Les scripts d’Action peuvent affecter l’authentification et modifier les données utilisateur. Seuls des administrateurs de confiance doivent être autorisés à les consulter, créer, éditer, tester, activer ou supprimer.
Dans les déploiements auto-hébergés, les scripts d’Action s’exécutent dans le processus serveur Logto avec ses privilèges. Accorder l’accès à l’édition ou au test des scripts équivaut à accorder l’exécution de code sur l’hôte Logto, donc la Console d’administration ne doit pas être partagée avec des utilisateurs non fiables. Considérez les scripts comme du code serveur de confiance ; le runtime limite le temps et la mémoire d’un script, mais ce n’est pas une frontière de sécurité pour du code non fiable.
Comment les Actions s’intègrent dans la connexion
Logto propose actuellement deux types d’actions :
| Type d’action | Quand elle s’exécute | Ce qu’elle peut faire |
|---|---|---|
| Post first-factor verification | Lors d’une connexion par mot de passe, uniquement après l’échec de la vérification du mot de passe local par Logto. Elle ne s’exécute pas si le mot de passe local est valide. | Vérifier les identifiants soumis auprès d’un système hérité, puis créer un nouvel utilisateur Logto ou mettre à jour un utilisateur existant et migrer le mot de passe soumis. |
| Post sign-in | Après que l’utilisateur a complété tous les facteurs d’authentification, y compris MFA si nécessaire, et avant que Logto ne termine la connexion et n’émette les jetons. | Mettre à jour et enrichir l’utilisateur Logto existant en utilisant le contexte final de connexion. |
Les deux types d’actions ne s’exécutent que pour les interactions SignIn dans l’Experience API. La post-vérification du premier facteur s’applique uniquement à la connexion par mot de passe ; la post-connexion est indépendante de la méthode d’authentification.
Modèle de script
Chaque type d’action possède une configuration et une fonction d’entrée JavaScript nommée runAction :
const runAction = async ({ event, environmentVariables = {} }) => {
// Inspecter l’événement, éventuellement récupérer des données externes, et retourner
// un résultat pris en charge par ce type d’action.
};
Le payload contient :
event: L’événement d’authentification en production. Sa structure dépend du type d’action.environmentVariables: Les valeurs de chaîne configurées pour cette action. Ces valeurs sont transmises via le payload de la fonction ; elles ne sont pas disponibles viaprocess.env.
L’éditeur fournit des informations de type, mais le script enregistré est exécuté en JavaScript. Le script peut être asynchrone et utiliser ces APIs Web standard dans Logto Cloud comme dans Logto auto-hébergé :
fetch,Request,ResponseetHeaders- Web Crypto via
cryptoetcrypto.subtle TextEncoderetTextDecoderURLetURLSearchParams
Les scripts ne peuvent pas importer de packages. Évitez les globales et modules spécifiques à Node.js car ils ne sont pas portables entre Logto auto-hébergé et Logto Cloud et ne font pas partie du contrat de script supporté.
Le résultat pris en charge diffère selon le type d’action ; consultez la page de référence correspondante avant d’activer une Action.
Actions et Webhooks
Les Actions et les Webhooks ont des objectifs différents :
| Actions | Webhooks | |
|---|---|---|
| Exécution | Synchrone et intégrée au flux d’authentification | Asynchrone et hors de la requête d’authentification |
| Peut affecter le flux d’authentification actuel | Oui | Non |
| Peut modifier un utilisateur depuis son résultat | Oui, via le patch utilisateur supporté | Pas directement ; le récepteur peut appeler le Management API séparément |
| Couverture des événements | Points d’authentification sélectionnés | Un large ensemble d’événements d’interaction et de modification de données |
| Usage typique | Migration d’identifiants, enrichissement du profil avant émission des jetons | Notifications, synchronisation descendante, analytique |
Gardez le travail asynchrone dans les Webhooks. Utilisez une Action uniquement lorsque Logto a besoin du résultat avant que l’authentification puisse continuer.