Authentifizierung mit Magic Link
Lerne, Magic Links für passwortloses Einloggen, registrierungsbeschränkte Einladungen und Einladungen von Organisationsmitgliedern mit Einmal-Token zu implementieren.
Was ist ein Magic Link?
Ein Magic Link ist eine passwortlose Authentifizierungsmethode, bei der ein Benutzer eine einmalige Login-URL per E-Mail (oder SMS) erhält. Durch Klicken auf den Link wird er ohne Passwortanfrage eingeloggt.
Hier sind einige wichtige Sicherheitsmerkmale von Magic Links:
- Einweg-Token: Das Token wird nach einmaligem Klicken ungültig, um eine Wiederverwendung zu verhindern.
- Link-Ablauf: Der Magic Link sollte eine kurze Ablaufzeit haben (z.B. 10 Minuten) für zusätzliche Sicherheit.
- Ratenlimitierung: Missbrauch verhindern, indem limitiert wird, wie viele Magic Links in einem bestimmten Zeitrahmen gesendet werden können.
- Geräte-/Browserbindung (Optional): Beschränkung der Nutzung des Links auf das ursprüngliche Gerät oder die IP, um Abfangen zu verhindern.
Zusammensetzung eines Magic Links
Ein Magic Link besteht aus:
- Der URL-Route: Zeigt auf die Zielseite deiner App.
- Einweg-Token: Ein einzigartiges und einmaleinlösbares Token für passwortlose Authentifizierung.
- Benutzer-E-Mail: Wird verwendet, um die Authentizität des Tokens und die Identität des Benutzers zu überprüfen.
- Zusätzliche Parameter: Optional, abhängig von den Bedürfnissen deiner App.
Zum Beispiel könnte ein Magic Link so aussehen:
Um einen Magic Link zu erstellen, musst du ein Einweg-Token generieren, es sicher an den Benutzer senden und dann validieren, wenn der Benutzer auf den Link klickt.
Workflow eines Magic Links
- Der Benutzer fordert einen Magic Link an: Der Benutzer gibt seine E-Mail in deiner App ein.
- Einweg-Token-Generierung: Der Server generiert ein Token und sendet es als Link per E-Mail.
- Der Benutzer klickt auf den Link: Der Benutzer klickt den Link in der E-Mail an.
- Token-Validierung: Der Server überprüft, ob das Token gültig ist.
- Der Benutzer ist authentifiziert: Wenn das Token gültig ist, wird der Benutzer eingeloggt.
Wie implementiert man Magic Links mit Logto?
Schritt 1: Einweg-Token anfordern
Verwende die Logto Management API, um ein Einweg-Token zu erstellen.
Beispielanforderung mit Body-Payload:
Schritt 2: Deinen Magic Link zusammensetzen
Nachdem du das Einweg-Token erhalten hast, kannst du einen Magic Link erstellen und an die E-Mail-Adresse des Endbenutzers senden. Der Magic Link sollte zumindest das Token und die Benutzer-E-Mail als Parameter enthalten und zu einer Zielseite in deiner eigenen Anwendung navigieren. Beispiel: https://yourapp.com/landing-page
.
Hier ist ein einfaches Beispiel, wie der Magic Link aussehen könnte:
Hinweis:
Die Parameternamen im Magic Link können vollständig angepasst werden. Du kannst zusätzliche Informationen zum Magic Link basierend auf den Anforderungen deiner Anwendung hinzufügen sowie alle URL-Parameter kodieren.
Schritt 3: Auslösen des Authentifizierungsflusses über Logto SDK
Nachdem der Endbenutzer auf den Magic Link geklickt und zu deiner Anwendung geleitet hat, kannst du die token
- und email
-Parameter aus der URL extrahieren und dann die signIn()
-Funktion vom Logto SDK aufrufen, um den Authentifizierungsfluss auszulösen.
Für weitere Details prüfe die Logto-Dokumentation - Magic Link (Einweg-Token).
Anwendungsfälle für Magic Links
Magic Links können den ersten Authentifizierungsschritt ersetzen, aber nicht die Mehrfaktor-Authentifizierung (MFA) umgehen.
In Logto brauchst du bei der Erstellung eines Magic Links mit einem Einweg-Token nicht anzugeben, ob es sich um eine Anmeldung oder Registrierung handelt. Wir bestimmen den Fluss automatisch basierend auf dem Registrierungsstatus der E-Mail:
- Nicht registrierte E-Mail: Der Klick auf den Magic Link leitet Benutzer zu dem Kontoerstellungsprozess, ohne dass die E-Mail eingetragen und verifiziert werden muss. Benutzer fahren mit der Einrichtung eines Passworts, dem Hinzufügen von Profildetails (z.B. vollständiger Name) oder dem Einrichten von MFA fort, basierend auf deinen Registrierungseinstellungen.
- Registrierte E-Mail: Der Klick auf den Magic Link umgeht die erste Überprüfung (z.B. „E-Mail + Passwort“ oder „E-Mail + Bestätigungscode“). Der Benutzer wird entweder direkt angemeldet oder muss MFA abschließen, basierend auf deinen Anmeldungseinstellungen.
Logto unterstützt die folgenden Szenarien mit Magic Links:
- Einladungsbasierte Registrierung: Für interne Tools oder KI-Produkte in der Testphase kannst du die öffentliche Registrierung deaktivieren und spezifische Benutzer über einen Magic Link einladen.
- Organisationsmitglieder-Einladung: Für SaaS-Produkte verwende Magic Links, um neue Mitglieder in eine Organisation einzuladen, wodurch der Aufnahmeprozess einfacher wird.
- Anmeldung / Registrierung: Sende einen Magic Link zur Anmeldung oder Registrierung per E-Mail.
Derzeit nicht unterstützt:
- Passwort zurücksetzen mit Magic Link.
- Verwenden einer Telefonnummer oder eines Benutzernamens als Identifikator.
Lass uns wissen, wenn du weitere Anpassungen benötigst.
Einladungsbasierte Registrierung mit Magic Link
Für neue Produkte (z.B. KI-Tools) in der internen Erprobung oder für interne Tools möchtest du möglicherweise die öffentliche Registrierung deaktivieren und nur bestimmten Benutzern den Zugang zu deiner App gewähren. Um dies mit Logto zu implementieren:
-
Gehe zu Konsole > Anmeldeerlebnis > Anmeldung und Registrierung > Erweiterte Optionen und schalte "Benutzerregistrierung aktivieren" aus, um die öffentliche Registrierung zu schließen.
-
Sammle die E-Mail-Adressen der Benutzer, die du einladen möchtest (z.B. über deine Website oder Empfehlungen bestehender Benutzer).
-
Erstelle und sende den magischen Einladungslink wie oben beschrieben (fordern das Einweg-Token an, erstelle den Magic Link, löse die Authentifizierung über das Logto SDK aus).
Hinweis: Lege eine Ablaufzeit für den Einladungslink fest. Es ist empfohlen, den Link für mindestens einen Tag gültig zu machen. Verwende den folgenden Anfragekörper, um das Einweg-Token zu generieren:
-
Sende den Magic Link an die E-Mail des Benutzers (z.B.
https://yourapp.com/landing-page?type=registrationInvitation&token=YHwbXSXxQfL02IoxFqr1hGvkB13uTqcd&[email protected]
). Passe die E-Mail-Vorlage an, wie zum Beispiel:Wenn Benutzer „Einladung annehmen“ klicken, werden sie automatisch bei deinem Dienst registriert, selbst wenn die öffentliche Registrierung deaktiviert ist. Dies wird als „Gezielte Benutzereinladung“ bezeichnet.
Mitgliedereinladung von Organisationen mit Magic Link
Für Multi-Tenant-Produkte (z.B. SaaS-Apps wie Slack, GitHub, Vercel), biete einen nahtlosen Mitglieder-Einladungsprozess, um Organisationsmitgliedschaften zu verwalten. Verwende Magic Links für höhere Konversionen bei Mitgliedereinladungen.
-
Folge der Logto-Dokumentation, um die Organisationserstellung, rollenbasierte Zugriffskontrolle von Organisationen und Organisationsmanagement zu implementieren: Logto-Organisationen.
-
Richte den "Mitglieder einladen"-Workflow in deinem Produkt ein. Beispiel:
-
Folge dieser Anleitung zum Einladen von Organisationsmitgliedern. Hinweis: Beim Einladen von Mitgliedern sicherstellen, dass die Anfrage-Payload Folgendes umfasst:
context: jitOrganizationIds
, um anzugeben, welcher Organisation(en) der Benutzer beitreten wird.- Setze eine längere
expiresIn
-Zeit (z.B. 2 Tage oder 1 Woche), um ausreichend Zeit für die Annahme der Einladung zu geben.
Beispielanforderung-anfrage-Payload:
-
Sende den Einladungslink an die E-Mail des Benutzers (z.B.
https://yourapp.com/landing-page?type=organizationMemberInvitation&token=YHwbXSXxQfL02IoxFqr1hGvkB13uTqcd&[email protected]
). Passe deine E-Mail-Vorlage an, zum Beispiel:Wenn Benutzer auf "Einladung annehmen" klicken, melden sie sich automatisch an oder registrieren sich und treten der Organisation bei.
Umgang mit Kontokonflikten
Was passiert, wenn ein Benutzer bereits angemeldet ist und einen weiteren Magic Link anklickt?
Um Kontokonflikte korrekt zu handhaben, stelle Folgendes sicher:
- Vermeide das Hinzufügen von
login
in der "Anmeldeaufforderung": Setze die Anmeldeaufforderung nicht so, dasslogin
enthalten ist. Falls falsch eingestellt, wird Logto automatisch das dem Magic-Link-Token zugeordnete Konto anmelden, wodurch die Aufforderung zum Kontowechsel umgangen wird. - Bestehende Tokens beibehalten: Beim Aufrufen der
signIn()
-Funktion denclearTokens: false
-Parameter angeben, um das Löschen bestehender Tokens zu verhindern. Wird diese Option verwendet, stelle sicher, dass du Tokens manuell löscht auf der Anmelderückrufseite.
Nach der richtigen Konfiguration wird das Benutzererlebnis wie folgt sein:
- Magic Link für das aktuelle Konto: Wenn der Benutzer bereits angemeldet ist und auf einen Magic Link für dasselbe Konto klickt, wird Logto das Einweg-Token überprüfen und den Benutzer bei Bedarf in den angegebenen Organisationen provisionieren.
- Magic Link für ein anderes Konto: Wenn der Benutzer angemeldet ist und auf einen Magic Link für ein anderes Konto klickt, wird Logto den Benutzer auffordern, entweder:
- Als neues Konto fortfahren: Logto wechselt nach der Token-Überprüfung zum neuen Konto.
- Beim aktuellen Konto bleiben: Logto überspringt die Token-Überprüfung und führt den Benutzer zurück zum aktuellen Konto.
Umgang mit Fehlerseiten für ungültige Magic Links
Wenn Benutzer auf einen ungültigen Magic Link klicken, werden sie auf eine Fehlerseite mit einer klaren Erklärung des Problems umgeleitet. Unten sind die möglichen Fehlerszenarien und ihre Nachrichten aufgeführt:
Name | Beschreibung |
---|---|
token_not_found | Aktives Token nicht gefunden mit angegebener E-Mail und Token. |
email_mismatch | E-Mail stimmt nicht mit angegebenem Token überein. |
token_expired | Token ist abgelaufen. |
token_consumed | Token wurde bereits verwendet. |
token_revoked | Token wurde widerrufen. |
cannot_reactivate_token | Token kann nicht reaktiviert werden. |
Jede Fehlerseite wird eine spezifische Nachricht bereitstellen, um Benutzern das Verständnis des Grundes für den ungültigen Magic Link zu erleichtern und sie über die nächsten Schritte zu informieren. Zum Beispiel:
Fazit
Logto bietet ein Sicherheitsniveau auf Unternehmensniveau durch flexible, passwortlose Anmeldeflüsse über Magic Links. Es ist eine einfache, aber leistungsstarke Möglichkeit, reibungslose Benutzererlebnisse zu schaffen - egal, ob du Benutzer einlädst, einer Organisation beizutreten, es ihnen ermöglichst, mühelos Konten zu erstellen, oder eine problemloses Authentifizierung bereitstellst. Und weil Logto schwierige Situationen wie Kontokonflikte und abgelaufene Tokens handhabt, erhalten deine Benutzer jedes Mal einen sicheren, frustfreien Prozess.
Bereit, dein IAM mit bombensicherer Authentifizierung zu modernisieren?