Keycloak Login mit Magic Links
Magic Links sind ein Authentifizierungsverfahren, das eine passwortlose Anmeldung ermöglicht. Statt eines Passworts erhalten Benutzer per E-Mail einen speziellen Link, der eine Sitzung mit ihrem Konto startet. Indem sie einfach auf den Link klicken, werden sie direkt in ihr Konto eingeloggt, ohne ein Passwort eingeben zu müssen.
Magic Links bieten mehrere Vorteile:
- Bequemlichkeit
-
Benutzer müssen sich kein komplexes Passwort merken oder eingeben. Sie erhalten einen direkten Zugriff auf ihr Konto, indem sie auf den Link in ihrer E-Mail klicken. Dies erleichtert die Anmeldung und reduziert die Reibungspunkte für die Benutzer.
- Sicherheit
-
Magic Links nutzen die Sicherheit des E-Mail-Kontos des Benutzers. Der Link wird an die registrierte E-Mail-Adresse gesendet, die mit dem Konto verknüpft ist. Dadurch wird sichergestellt, dass nur der rechtmäßige Besitzer der E-Mail-Adresse Zugriff auf das Konto hat. Es wird davon ausgegangen, dass der Zugriff auf die E-Mail-Adresse des Benutzers ausreichend sicher ist.
- Schutz vor Passwort-bezogenen Risiken
-
Da bei Magic Links keine Passwörter verwendet werden, sind Benutzer nicht anfällig für Risiken wie unsichere Passwörter, Passwortlecks oder Phishing-Angriffe, die auf Passwörter abzielen. Dadurch wird die Sicherheit erhöht und das Risiko von Kontoübernahmen reduziert.
Es ist jedoch wichtig zu beachten, dass Magic Links möglicherweise nicht für alle Anwendungsfälle geeignet sind. Bei sensiblen oder hochsensiblen Konten können zusätzliche Sicherheitsmaßnahmen wie die Zwei-Faktor-Authentifizierung erforderlich sein, um einen angemessenen Schutz zu gewährleisten.
Keycloak-Erweiterung für Magic Links
Keycloak unterstützt Magic Links nicht out of the Box. Da Keycloak aber sehr gut erweiterbar ist, lässt sich die benötigte Funktionalität recht einfach über eine Erweiterung nachrüsten.
Je nach Anforderung lohnt es sich eine solche Erweiterung kundenindividuell zu entwickeln oder auf eine bereits entwickelte, quelloffene Erweiterung zurückzugreifen. Für unser Beispiel verwenden wir die Magic Link Extension von PhaseTwo.
Extensions für Keycloak werden als Jar-Dateien bereitgestellt.
Um sie zu installieren werden diese Jar-Dateien in das Verzeichnis /opt/keycloak/providers/
kopiert.
Wird Docker verwendet, kann mit folgendem Dockerfile ein vom offiziellen Keycloak-Image abgeleitetes Image mit der benötigten Extension erzeugt werden:
FROM quay.io/keycloak/keycloak:21.1.1 ENV KC_METRICS_ENABLED=true ENV KC_HEALTH_ENABLED=true ENV KC_FEATURES=preview ADD https://repo1.maven.org/maven2/io/phasetwo/keycloak/keycloak-magic-link/0.11/keycloak-magic-link-0.11.jar /opt/keycloak/providers/ ADD https://repo1.maven.org/maven2/io/phasetwo/keycloak/keycloak-themes/0.17/keycloak-themes-0.17.jar /opt/keycloak/providers/ USER root RUN chown 1000:1000 /opt/keycloak/providers/* USER 1000 RUN /opt/keycloak/bin/kc.sh --verbose build
Authentication Flow konfigurieren
Die Extension kommt mit einem Magic Link Authenticator und einem eigenen Authentication Flow, der als Browser Flow aktiviert werden kann:
Über die Konfiguration des Authenticators kann festlegt werden, dass bei Eingabe einer E-Mail-Adresse, die noch keinem Benutzer zugeordnet wurde, automatisch ein neuer Benutzer angelegt werden soll ("Force create new user"):
Wichtig ist weiterhin, dass für den Realm ein E-Mail-Zugang konfiguriert wurde, sonst kann Keycloak keine E-Mails mit Magic Links verschicken. Die Einstellung dazu können unter Realm settings/Email vorgenommen werden.
Login mit Magic Link
Bei der Anmeldung mit Magic Link wird der Benutzer nun zunächst nach seinem Benutzernamen oder seiner E-Mail-Adresse gefragt.
Wird der Benutzer gefunden, wird ihm eine E-Mail mit Magic Link geschickt. Wird kein Benutzer gefunden, wird - je nach Konfiguration - ein neuer Benutzer angelegt und ebenfalls eine E-Mail mit Magic Link versendet.
Sobald der Benutzer die E-Mail erhalten hat, braucht er nur noch auf den enthaltenen Link zu klicken und ist in der Anwendung angemeldet.
Für zusätzliche Sicherheit, ist der Link nur eine bestimmte Zeit lang gültig und kann nach Abauf nicht mehr verwendet werden.
Anpassungen und Variationen
Natürlich lässt sich das E-Mail-Template gemäß der unternehmenspezifischen Layout- und Designvorgaben anpassen.
Als weitere Variation kann statt des Magic Links auch ein Authentifizierungscode bzw. One-Time-Passwort verschickt werden. Dann wird kein Link angeklickt, sondern stattdessen ein 6-stelliger Code in ein Formular eingetragen.
Dies kann nützlich sein, wenn E-Mails auf einem mobilen Endgerät wie einem Smartphone empfangen werden, die Anwendung aber auf einem Desktop PC oder Notebook verwendet werden soll.
Hierzu stellt die Extension einen E-Mail OTP Authenticator zur Verfügung:
Weitere Variationen sind denkbar, erfordern aber etwas Programmieraufwand bei der Anpassung oder Entwicklung von Keycloak Erweiterungen.
So könnte man beispielsweise den Authentifizierungscode über einen SMS-Anbieter oder als Whatsapp-Nachricht verschicken oder könnte einen Magic Link entwickeln, der es ermöglicht vom Mobiltelefon aus eine Authenfizierung auf einem Desktop-PC oder Notebook freizugeben.
Wir unterstútzen hier gerne mit individueller Entwicklung oder passenden Schulungen zur Konfiguration, Anpassung und Erweiterung von Keycloak.
Unsere Serie
In dieser Serie zeigen wir euch die Umsetzung passwortloser Authenfizierungsverfahren mit Keycloak:
-
Teil 2: Keycloak Login mit Magic Links
-
Teil 3: WebAuthn mit Keycloak
-
Teil 4: Passkeys mit Keycloak
Zu den Themen Security, Passwordless und Keycloak bieten wir sowohl Beratung, Entwicklungsunterstützung als auch passende Schulungen an:
Auch für Ihren individuellen Bedarf können wir Workshops und Schulungen anbieten. Sprechen Sie uns gerne an.