Vizion Web
Auth & Sécurité

Magic link

Définition

Lien de connexion à usage unique envoyé par e-mail. L'utilisateur clique et il est authentifié, sans mot de passe à mémoriser. Plus simple et plus sécurisé qu'un classique email/password.

Comment ça marche

Un magic link est un lien d'authentification à usage unique envoyé par e-mail. L'utilisateur saisit son adresse e-mail sur la page de connexion, reçoit un e-mail contenant un lien signé cryptographiquement avec un token unique, clique sur ce lien, et il est connecté automatiquement. Le token est généralement valide pendant 5 à 15 minutes et expire dès qu'il est utilisé. Techniquement, le serveur génère un JWT ou un token aléatoire stocké en base, l'inclut dans l'URL du lien, puis vérifie sa validité au moment du clic. Aucun mot de passe n'est jamais demandé, choisi ou stocké.

À quoi ça sert

Le magic link résout plusieurs problèmes simultanément. La friction d'inscription : pas de mot de passe à choisir, pas de validation à valider, pas de "mot de passe oublié" à gérer. La sécurité : pas de mot de passe à voler dans une fuite de base, pas de réutilisation entre sites, pas de mots de passe faibles. L'expérience : l'utilisateur ne mémorise rien, il clique sur un lien dans son inbox. Pour des SaaS utilisés occasionnellement (outils de validation, dashboards mensuels, espaces clients), c'est l'option qui réduit drastiquement l'abandon à la connexion.

Quand l'utiliser

Le magic link brille sur les apps à usage peu fréquent où le mot de passe est forcément oublié : espace client d'une agence, dashboard de reporting mensuel, formulaire de feedback récurrent, plateforme de validation occasionnelle. C'est aussi excellent pour les MVP qui veulent éviter de coder toute la logique d'inscription + reset password. Slack, Notion, Vercel utilisent tous le magic link comme option ou défaut. Sur des apps utilisées quotidiennement (Gmail, Slack pro), un mot de passe + session longue reste plus pratique, l'utilisateur ne veut pas attendre un email à chaque connexion.

Quand ne pas l'utiliser

On évite le magic link quand l'utilisateur a besoin de se connecter très souvent (plusieurs fois par jour) : attendre l'email à chaque fois est frustrant. On l'évite quand la délivrabilité email peut être problématique (apps mobiles dans des contextes mauvais réseau, audiences sur GMail avec spam folder, utilisateurs en entreprise avec MX filtré). On l'évite quand la sécurité doit être renforcée bien au-delà de l'email seul : pour des accès administrateur ou financier critiques, on ajoute du MFA. Et on l'évite sur les apps avec mise en oeuvre OAuth très simple : si l'utilisateur a déjà un Google, "Continuer avec Google" reste plus rapide.

La sécurité

La sécurité du magic link repose entièrement sur la sécurité de la boîte email. Si l'email est compromis, le magic link l'est aussi. C'est globalement aussi sûr qu'un mot de passe (souvent meilleur, parce que sans mot de passe on évite phishing, brute force, réutilisation). On renforce avec des pratiques standard : token à usage unique, expiration courte (10 minutes), invalidation à utilisation, vérification que le lien est cliqué sur le même navigateur que la demande (pour bloquer un phishing par redirection email), rate limiting des demandes par adresse. Pour les comptes critiques, on ajoute un second facteur (passkey, TOTP).

Les outils

Supabase Auth gère le magic link en quelques lignes : signInWithOtp({ email }) côté client, le reste est automatique avec template d'email personnalisable. Clerk fait pareil avec une UI prête à l'emploi. Auth.js (NextAuth) supporte le magic link via son EmailProvider, en personnalisant le envoi d'email via Resend ou Postmark. Pour de l'auth complètement custom, on génère un JWT signé avec une lib comme jose, on l'envoie par email via Resend, on valide au callback. La complexité technique est faible, le travail est surtout sur le template d'email et la délivrabilité.

Les pièges à éviter

Le piège de la délivrabilité : si l'email tombe en spam, l'utilisateur ne peut pas se connecter. On configure SPF, DKIM, DMARC dès le départ, on évite les domaines d'envoi nouveaux, on chauffe progressivement. Le piège du lien qui ne marche pas en cliquant : certains clients email (corporate, anti-virus) pré-fetch les liens, ce qui invalide le token à usage unique avant que l'utilisateur ne clique. On exige une action explicite (formulaire de confirmation après le clic) pour les cas critiques. Le piège du phishing : un attaquant qui demande un magic link pour l'email d'une victime peut tenter de l'utiliser, on bloque avec un check de session ou un device fingerprint. Et toujours rate limiter les demandes pour éviter le spam.

Autres termes de la catégorie Auth & Sécurité