Passwortloses Anmelden mit Fortify-Zwei-Faktor-Unterstützung in Laravel
Der Beitrag stellt ein Laravel-Paket vor, das passwortlose Anmeldung über Magic Links und Einmalcodes ermöglicht und dabei für Zwei-Faktor-Abläufe an Fortify übergibt.
Lesenswert ist er für alle, die an Login-UX oder Sicherheit arbeiten, besonders weil das Paket verhindern soll, dass E-Mail-Scanner Links vorzeitig auslösen.
Email Magic Link for Laravel ist ein Paket für passwortlose Authentifizierung, das Benutzer über per E-Mail versendete Links oder Einmalcodes anmelden kann. Das Paket funktioniert eigenständig oder neben Laravel Fortify und benötigt keine zusätzlichen Abhängigkeiten jenseits des Frameworks selbst.
Das Paket behebt ein kritisches Sicherheitsproblem traditioneller Magic-Link-Systeme: E-Mail-Scanner und Sicherheitsgeräte rufen URLs oft automatisch ab, bevor Nutzer sie sehen, und verbrauchen damit Einmaltoken unbeabsichtigt. Email Magic Link löst dies durch einen zwei-teiligen Ablauf – der GET-Request zeigt nur eine Bestätigungsseite, während das Token nur durch einen expliziten POST von dieser Seite verbraucht wird, was Scanner nicht auslösen können. Tokens und Codes werden nur als gehashte Werte (keyed HMAC-SHA256) gespeichert, nie im Klartext, mit individuellem Brute-Force-Schutz pro Token (maximal 5 Versuche standardmäßig) und sichere Konsumption ohne Race Conditions.
Wenn Benutzer Zwei-Faktor-Authentifizierung über Fortify aktiviert haben, authentifiziert die Magic-Link-Verifikation sie nicht automatisch. Stattdessen werden sie als unauthentifizierte Benutzer zum Zwei-Faktor-Challenge von Fortify weitergeleitet, wodurch Bypass-Szenarien verhindert werden. Für SPA- und Mobile-Clients zeigen JSON-Responses an, ob Nutzer Zwei-Faktor-Verifizierung benötigen oder vollständig authentifiziert sind.
Entwickler können Links und Codes programmatisch ausstellen, ohne sie automatisch zu versenden, was benutzerdefinierte Zustellung über SMS, Push-Benachrichtigungen oder Custom-Mailables über die EmailMagicLink-Facade ermöglicht. Das Paket enthält eine ResendGuard, um Missbrauch zu verhindern, mit gestaffelten Cooldowns (30 Sekunden, 60 Sekunden, 120 Sekunden) und einer rollierenden Obergrenze von fünf Versuchen pro Stunde. Ein geplanter Befehl bereinigt abgelaufene Tokens täglich automatisch.
Das Paket erfordert PHP 8.4 und Laravel 13, wobei Fortify optional ist. Die Installation erfolgt über `composer require pushery/email-magic-link-for-laravel`, gefolgt vom Install-Befehl und der Datenbankmigrationen.
Leserforum
Noch keine Beiträge — eröffne die Debatte.
Starte die Diskussion
Kein Konto, kein Passwort nötig — gib einfach deine E-Mail-Adresse ein, wir senden dir einen einmaligen Anmelde-Link. Beim ersten Mal bist du damit automatisch angemeldet.
Deine Bewertung wird nach der Anmeldung automatisch übernommen.
Schau in dein Postfach
Wir haben einen Anmelde-Link an … gesendet. Öffne ihn auf diesem Gerät — dieser Tab meldet dich automatisch an.
Warte auf deinen Klick …
·