Authentification par lien magique
Apprenez à implémenter des liens magiques pour une connexion sans mot de passe, une inscription sur invitation uniquement, et des invitations pour les membres d'une organisation en utilisant des jetons à usage unique.
Qu'est-ce qu'un lien magique ?
Un lien magique est une méthode d'authentification sans mot de passe où un utilisateur reçoit un URL de connexion à usage unique par email (ou SMS). En cliquant sur le lien, ils se connectent sans avoir besoin de mot de passe.
Voici quelques caractéristiques de sécurité clés des liens magiques :
- Jeton à usage unique : Une fois cliqué, le jeton devient invalide pour empêcher toute réutilisation.
- Expiration du lien : Le lien magique doit avoir un temps d'expiration court (par exemple, 10 minutes) pour plus de sécurité.
- Limitation du taux : Empêcher les abus en limitant le nombre de liens magiques qui peuvent être envoyés dans un certain laps de temps.
- Association appareil/navigateur (Optionnel) : Restreindre l'utilisation du lien à l'appareil ou l'adresse IP d'origine pour éviter les interceptions.
Composition d'un lien magique
Un lien magique se compose de :
- La route URL : Pointe vers la page de destination de votre application.
- Jeton à usage unique : Un jeton unique et à consommation unique utilisé pour l'authentification sans mot de passe.
- Email de l'utilisateur : Utilisé pour valider l'authenticité du jeton et l'identité de l'utilisateur.
- Paramètres supplémentaires : Optionnels, selon les besoins de votre application.
Par exemple, un lien magique pourrait ressembler à ceci :
Pour créer un lien magique, vous devez générer un jeton à usage unique, l'envoyer de manière sécurisée à l'utilisateur, puis le valider lorsque l'utilisateur clique sur le lien.
Workflow d'un lien magique
- L'utilisateur demande un lien magique : L'utilisateur entre son email sur votre application.
- Génération du jeton à usage unique : Le serveur génère un jeton et l'envoie sous forme de lien par email.
- L'utilisateur clique sur le lien : L'utilisateur clique sur le lien dans l'email.
- Validation du jeton : Le serveur vérifie si le jeton est valide.
- L'utilisateur est authentifié : Si le jeton est valide, l'utilisateur est connecté.
Comment implémenter des liens magiques avec Logto ?
Étape 1 : Demandez un jeton à usage unique
Utilisez l'API de gestion Logto pour créer un jeton à usage unique.
Exemple de charge utile de la demande :
Étape 2 : Composez votre lien magique
Après avoir obtenu le jeton à usage unique, vous pouvez composer un lien magique et l'envoyer à l'adresse email de l'utilisateur final. Le lien magique doit au minimum contenir le jeton et l'email de l'utilisateur en tant que paramètres, et doit naviguer vers une page de destination dans votre propre application. Par exemple : https://votreapp.com/page-destination
.
Voici un exemple simple de ce à quoi le lien magique peut ressembler :
Remarque :
Les noms de paramètres dans le lien magique peuvent être entièrement personnalisés. Vous pouvez ajouter des informations supplémentaires au lien magique en fonction des exigences de votre application, ainsi que coder tous les paramètres URL.
Étape 3 : Déclenchez le flux d'authentification via le SDK Logto
Après que l'utilisateur final ait cliqué sur le lien magique et navigué vers votre application, vous pouvez extraire les paramètres token
et email
à partir de l'URL, puis appeler la fonction signIn()
du SDK Logto pour déclencher le flux d'authentification.
Pour plus de détails, consultez les Docs Logto - Lien Magique (Jeton à usage unique).
Cas d'utilisation des liens magiques
Les liens magiques peuvent remplacer l'étape d'authentification du premier facteur, mais ne peuvent pas contourner l'Authentification Multi-Facteurs (MFA).
Dans Logto, lors de la génération d'un lien magique avec un jeton à usage unique, vous n'avez pas besoin de spécifier s'il s'agit d'une connexion ou d'une inscription. Nous déterminons automatiquement le flux en fonction de l'état d'enregistrement de l'email :
- Email non enregistré : Cliquer sur le lien magique redirige les utilisateurs vers le flux de création de compte, en passant l'entrée et la vérification de l'email. Les utilisateurs procèdent à la définition d'un mot de passe, ajoutent les détails de profil (par ex., nom complet) ou configurent la MFA, en fonction de vos paramètres d'inscription.
- Email enregistré : Cliquer sur le lien magique contourne la première vérification (par ex., "email + mot de passe" ou "email + code de vérification"). L'utilisateur est soit connecté directement, soit invité à compléter la MFA, en fonction de vos paramètres de connexion.
Logto prend en charge les scénarios suivants avec des liens magiques :
- Inscription sur invitation uniquement : Pour les outils internes ou les produits d'IA en phase de test, vous pouvez désactiver l'inscription publique et inviter des utilisateurs spécifiques via un lien magique.
- Invitation des membres d'une organisation : Pour les produits SaaS, utilisez des liens magiques pour inviter de nouveaux membres dans une organisation, facilitant ainsi le processus d'adhésion.
- Connexion / Inscription : Envoyer un lien magique pour la connexion ou l'inscription par email.
Actuellement non pris en charge :
- Réinitialisation de mot de passe avec un lien magique.
- Utiliser un numéro de téléphone ou un nom d'utilisateur comme identifiant.
Faites-nous savoir si vous avez besoin de personnalisation supplémentaire.
Inscription sur invitation uniquement avec lien magique
Pour les nouveaux produits (par ex., outils d'IA) en test interne ou pour les outils internes, vous pouvez vouloir désactiver l'inscription publique et permettre seulement à des utilisateurs spécifiques d'accéder à votre application. Pour implémenter cela avec Logto :
-
Allez dans Console > Expérience de connexion > Connexion et inscription > Options avancées, et désactivez "Activer l'inscription d'utilisateur" pour fermer l'inscription publique.
-
Recueillez les adresses email des utilisateurs que vous voulez inviter (par ex., via votre site Web ou des recommandations d'utilisateurs existants).
-
Créez et envoyez le lien d'invitation magique comme indiqué ci-dessus (demandez le jeton à usage unique, composez le lien magique, déclenchez l'authentification via le SDK Logto).
Remarque: Définissez un temps d'expiration pour le lien d'invitation. Il est recommandé de rendre le lien valide pour au moins un jour. Utilisez la charge utile de la demande suivante pour générer le jeton à usage unique :
-
Envoyez le lien magique à l'email de l'utilisateur (par ex.,
https://votreapp.com/page-destination?type=registrationInvitation&token=YHwbXSXxQfL02IoxFqr1hGvkB13uTqcd&[email protected]
). Personnalisez le modèle d'email, comme :Lorsque les utilisateurs cliquent sur "Accepter l'invitation", ils s'inscriront automatiquement à votre service, même si l'inscription publique est désactivée. Cela est appelé "Invitation d'utilisateur ciblée".
Invitation des membres d'une organisation avec lien magique
Pour les produits multi-tenant (par ex., applications SaaS comme Slack, GitHub, Vercel), fournissez un processus d'invitation de membre transparent pour gérer les adhésions d'organisation. Utilisez des liens magiques pour des taux de conversion plus élevés dans les invitations de membres.
-
Suivez les Docs Logto pour implémenter la création d'organisation, le contrôle d'accès basé sur les rôles d'organisation, et la gestion d'organisation : Logto Organisations.
-
Configurez le flux "Inviter des membres" dans votre produit. Exemple :
-
Suivez ce guide pour Inviter des Membres d'Organisation. Remarque: Lors de l'invitation de membres, assurez-vous que la charge utile de la demande inclut :
context: jitOrganizationIds
pour spécifier quelles organisations l'utilisateur rejoindra.- Définissez un temps d'
expiresIn
plus long (par exemple, 2 jours ou 1 semaine) pour donner suffisamment de temps aux utilisateurs pour accepter l'invitation.
Exemple de charge utile de la demande :
-
Envoyez le lien d'invitation à l'email de l'utilisateur (par ex.,
https://votreapp.com/page-destination?type=organizationMemberInvitation&token=YHwbXSXxQfL02IoxFqr1hGvkB13uTqcd&[email protected]
). Personnalisez votre modèle d'email, par exemple :Lorsque les utilisateurs cliquent sur "Accepter l'invitation", ils se connectent ou s'inscrivent automatiquement et rejoignent l'organisation.
Gérer les conflits de compte
Que se passe-t-il si un utilisateur est déjà connecté et clique sur un autre lien magique ?
Pour gérer correctement les conflits de compte, assurez-vous des points suivants :
- Évitez d'ajouter
login
dans le "prompt de connexion" : Ne définissez pas le prompt de connexion incluant lelogin
. S'il est incorrectement défini, Logto se connectera automatiquement au compte associé au jeton du lien magique, ignorant le prompt de changement de compte. - Préservez les jetons existants : Lors de l'appel de la fonction
signIn()
, spécifiez le paramètreclearTokens: false
pour éviter de supprimer les jetons existants. Si cette option est utilisée, assurez-vous de supprimer manuellement les jetons dans la page de callback de connexion.
Après une configuration correcte, l'expérience utilisateur sera la suivante :
- Lien magique pour le compte actuel : Si l'utilisateur est déjà connecté et clique sur un lien magique pour le même compte, Logto vérifiera le jeton à usage unique et provisionnera l'utilisateur aux organisations spécifiées si nécessaire.
- Lien magique pour un compte différent : Si l'utilisateur est connecté et clique sur un lien magique pour un compte différent, Logto demandera à l'utilisateur de :
- Continuer en tant que nouveau compte : Logto passe au nouveau compte après vérification du jeton.
- Rester avec le compte actuel : Logto ignore la vérification du jeton et retourne l'utilisateur au compte actuel.
Gérer les pages d'erreur pour lien magique invalidé
Lorsque les utilisateurs cliquent sur un lien magique invalide, ils seront redirigés vers une page d'erreur avec une explication claire du problème. Voici les scénarios d'erreur possibles et leurs messages :
Nom | Description |
---|---|
token_not_found | Jeton actif non trouvé avec l'email et le jeton donnés. |
email_mismatch | Mismatch de l'email avec le jeton donné. |
token_expired | Le jeton est expiré. |
token_consumed | Le jeton a été consommé. |
token_revoked | Le jeton a été révoqué. |
cannot_reactivate_token | Impossible de réactiver le jeton. |
Chaque page d'erreur fournira un message spécifique, aidant les utilisateurs à comprendre la raison derrière le lien magique invalide et les guidant sur les étapes suivantes. Par exemple :
Conclusion
Logto offre une sécurité de niveau entreprise grâce à des flux de connexion sans mot de passe flexibles utilisant des liens magiques. C'est un moyen simple mais puissant de créer des expériences utilisateur fluides—que vous invitiez des utilisateurs à rejoindre une organisation, les laissiez créer des comptes sans effort, ou offriez une authentification sans tracas. Et parce que Logto gère des situations complexes comme les conflits de compte et les jetons expirés, vos utilisateurs bénéficient d'un processus sécurisé et sans frustration à chaque fois.
Prêt à moderniser votre IAM avec une authentification infaillible ?