Deutsch
  • Magic Link
  • Passwortlos
  • Authentifizierung
  • Einladung

Authentifizierung mit Magic Link

Lerne, Magic Links für passwortloses Einloggen, registrierungsbeschränkte Einladungen und Einladungen von Organisationsmitgliedern mit Einmal-Token zu implementieren.

Ran
Ran
Product & Design

Verschwenden Sie keine Wochen mit Benutzerauthentifizierung
Bringen Sie sichere Apps schneller mit Logto auf den Markt. Integrieren Sie Benutzerauthentifizierung in Minuten und konzentrieren Sie sich auf Ihr Kernprodukt.
Jetzt starten
Product screenshot

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.

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.

  1. Der Benutzer fordert einen Magic Link an: Der Benutzer gibt seine E-Mail in deiner App ein.
  2. Einweg-Token-Generierung: Der Server generiert ein Token und sendet es als Link per E-Mail.
  3. Der Benutzer klickt auf den Link: Der Benutzer klickt den Link in der E-Mail an.
  4. Token-Validierung: Der Server überprüft, ob das Token gültig ist.
  5. Der Benutzer ist authentifiziert: Wenn das Token gültig ist, wird der Benutzer eingeloggt.

Schritt 1: Einweg-Token anfordern

Verwende die Logto Management API, um ein Einweg-Token zu erstellen.

Beispielanforderung mit Body-Payload:

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).

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:

  1. 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.
  2. Organisationsmitglieder-Einladung: Für SaaS-Produkte verwende Magic Links, um neue Mitglieder in eine Organisation einzuladen, wodurch der Aufnahmeprozess einfacher wird.
  3. Anmeldung / Registrierung: Sende einen Magic Link zur Anmeldung oder Registrierung per E-Mail.

Derzeit nicht unterstützt:

Lass uns wissen, wenn du weitere Anpassungen benötigst.

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:

  1. Gehe zu Konsole > Anmeldeerlebnis > Anmeldung und Registrierung > Erweiterte Optionen und schalte "Benutzerregistrierung aktivieren" aus, um die öffentliche Registrierung zu schließen.

    logto_disable_public_registration.png

  2. Sammle die E-Mail-Adressen der Benutzer, die du einladen möchtest (z.B. über deine Website oder Empfehlungen bestehender Benutzer).

  3. 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:

  4. 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:

    email_templates_invitation_only_registration.png

    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.

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.

  1. Folge der Logto-Dokumentation, um die Organisationserstellung, rollenbasierte Zugriffskontrolle von Organisationen und Organisationsmanagement zu implementieren: Logto-Organisationen.

  2. Richte den "Mitglieder einladen"-Workflow in deinem Produkt ein. Beispiel:

    invite_organization_member_in_app.png

  3. 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:

  4. 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:

    email_templates_join_organization.png

    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, dass login 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 den clearTokens: 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:

  1. 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.
  2. 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.
    magic_link_account_conflicts.png

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:

NameBeschreibung
token_not_foundAktives Token nicht gefunden mit angegebener E-Mail und Token.
email_mismatchE-Mail stimmt nicht mit angegebenem Token überein.
token_expiredToken ist abgelaufen.
token_consumedToken wurde bereits verwendet.
token_revokedToken wurde widerrufen.
cannot_reactivate_tokenToken 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:

magic_link_error_pages.png

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?