Connexion sans mot de passe avec la prise en charge du second facteur Fortify dans Laravel
L’article présente un package Laravel qui ajoute une authentification sans mot de passe via des magic links et des codes à usage unique, avec փոխանցement vers Fortify pour les parcours à deux facteurs.
Il vaut le détour si vous travaillez sur l’UX de connexion ou la sécurité, notamment parce que le package cherche à éviter que des scanners de messagerie n’activent les liens à la place de l’utilisateur.
Email Magic Link for Laravel est un package d'authentification sans mot de passe qui permet aux utilisateurs de se connecter via des liens envoyés par e-mail ou des codes à usage unique. Le package fonctionne de manière autonome ou aux côtés de Laravel Fortify et ne nécessite aucune dépendance supplémentaire au-delà du framework lui-même.
Le package résout un problème de sécurité critique des systèmes de magic links traditionnels : les scanners de courrier et les dispositifs de sécurité récupèrent souvent les URL automatiquement avant que les utilisateurs ne les voient, consommant des tokens à usage unique par inadvertance. Email Magic Link résout ce problème en divisant le flux en deux étapes : la requête GET affiche uniquement une page de confirmation, tandis que le token n'est consommé que par un POST explicite provenant de cette page, ce que les scanners ne peuvent pas déclencher. Les tokens et codes ne sont stockés que sous forme de valeurs hachées (HMAC-SHA256 avec clé), jamais en texte clair, avec protection par force brute individuelle par token (5 tentatives maximum par défaut) et consommation sécurisée sans conditions de course.
Quand les utilisateurs ont activé l'authentification à deux facteurs via Fortify, la vérification du magic link ne les authentifie pas automatiquement. Au lieu de cela, ils sont redirigés vers le défi à deux facteurs de Fortify en tant qu'utilisateurs non authentifiés, ce qui empêche les scénarios de contournement. Pour les clients SPA et mobiles, les réponses JSON indiquent si les utilisateurs ont besoin de vérification à deux facteurs ou s'ils sont entièrement authentifiés.
Les développeurs peuvent émettre des liens et des codes de manière programmatique sans les envoyer automatiquement, ce qui permet une livraison personnalisée via SMS, notifications push ou mailables personnalisés via la facade EmailMagicLink. Le package comprend une ResendGuard pour prévenir les abus, avec des délais d'attente échelonnés (30 secondes, 60 secondes, 120 secondes) et une limite glissante de cinq tentatives par heure. Une commande planifiée nettoie automatiquement les tokens expirés quotidiennement.
Le package nécessite PHP 8.4 et Laravel 13, Fortify étant optionnel. L'installation se fait via `composer require pushery/email-magic-link-for-laravel`, suivi de la commande d'installation et des migrations de base de données.
Tribune des lecteurs
Pas encore de contributions — lance le débat.
Lance la discussion
Pas de compte ni de mot de passe — saisis simplement ton adresse e-mail et nous t’envoyons un lien de connexion à usage unique. Première visite ? Tout se met en place automatiquement.
Ton évaluation sera appliquée automatiquement après ta connexion.
Vérifie ta boîte mail
Nous avons envoyé un lien de connexion à …. Ouvre-le sur cet appareil — cet onglet te connectera automatiquement.
En attente de ton clic …
·