Passkeys sind der neue heiße Scheiß in der Entwicklerwelt, na ja, zumindest wirkt es so, da ich 2 Dienste verwende, welche mir das aufdrücken und ich nur einem das gestatte, und das aus gutem Grund. In diesem Beitrag erfährst du, was Passkeys sind, warum es nicht so einfach ist und warum ich Magic Links als Alternative besser finde.
Was sind Passkeys?
Menschen sind vergesslich, wollen/können sich nicht lange und komplexe Passwörter merken. Zwar gibt es Dienste wie KeePass oder LastPass, wo man Passwörter mit einem Master Passwort absichern kann, aber auch das ist für manche immer noch zu kompliziert.
Kurzum: kurze Passwörter sind nicht sicher und lange Passwörter sind schwer zu merken.
Passkeys sollten hier eine Lösung bieten, und zwar dass man über die WebAutn Browser API über sein mobiles Gerät sich authentifizieren kann, zum Beispiel mit einem Fingerabdruck. Dann braucht man nur noch seine E-Mail-Adresse, und man kann sich anmelden. Kein Passwort mehr nötig.
Genial, oder?
Passkeys sind nicht einfach
Während sich die Theorie unfassbar toll und genial anhört, ist die praktische Realisierung alles andere als einfach, denn neben Experten Wissen in der Javascript Implementierung, Cyber Security und mögliche Schlaglöcher bei der Entwicklung, denn schließlich soll es ja auch sicher sein, aber damit es sicher ist, muss man es auch sicher in die eigene Anwendung implementieren können. Denn ohne Passwort kommt im Problemfall der Nutzer nicht mehr an seine Daten heran.
Corbado, welche helfen Passkeys zu implementieren, sprechen davon, das es 100x schwerer ist, Passkeys in den produktiven Betrieb zu integrieren, als es eine einfache Demonstration von Passkeys zeigt.
Denn es gibt verschiedene Fallstricke, die zum Problem werden können, zum Beispiel muss der Passkey auch auf einem neuen Gerät funktionieren oder was, wenn das alte Gerät verloren gegangen ist? Was, wenn man zwar über die Webanwendung den Passkey Login anfragt, aber auf dem mobilen Gerät keine Authentifizierungsanfrage auftaucht (ist mir bei einem Dienst schon öfter passiert, daher verwende ich Passkey und Passwort Option)?
Passkeys implementieren
Nein, hier kommt nun keine Anleitung, denn das Thema ist komplex und da halte ich mich selbst als Entwickler, lieber an Security Experten, welche wissen wie man das richtig macht.
Die Experten von Corbado haben hier ein Tutorial veröffentlicht, welches gut erklärt wie man es implementieren kann:
Passkey Tutorial: How to Implement Passkeys in Web Apps
Magic Link als Alternative
Aber gibt es eine sichere und einfachere Alternative zu Passkeys? Ja, die gibt es, und diese sind im Internet unter 2 verschiedenen Bezeichnungen auffindbar, entweder Magic Link, manchmal aber auch Magic Login genannt, beide bedeuten dasselbe, sind aber nur unterschiedliche Bezeichnungen.
Was ist der Magic Link?
Hierbei handelt es sich um das Auslagern der Authentifizierung, der Nutzer meldet sich nicht mehr beim Webdienst an, sondern bei seinem E-Mail-Anbieter. Der Webdienst hat also kein Passwort des Nutzers gespeichert.
Wie funktioniert das?
Im Prinzip ist es recht einfach und dennoch sicher, denn beim Webdienst gibt man via Magic Link Verfahren nur seine bereits registrierte E-Mail-Adresse an. Der Dienst schickt dann eine E-Mail mit einem Link und einem Authentifizierungstoken an den Nutzer.
Damit man sich nun beim Webdienst anmelden kann, muss man sich beim E-Mail-Anbieter anmelden, wo man auf die E-Mail zugreifen kann, folglich authentifiziert man sich dadurch, dass man das Passwort zum eigenen E-Mail Konto hat, dessen E-Mail-Adresse sich gegenüber dem Webdienst anmelden möchte. Nach dem Klick auf den Link wird man beim Webdienst angemeldet und kann diesen ganz normal nutzen.
Was sind nun die Vorteile und was die Nachteile?
Vorteile von Magic Links
- Einfachheit und Benutzerfreundlichkeit:
- Benutzer müssen sich keine Passwörter merken oder erstellen.
- Der Anmeldeprozess ist schnell und unkompliziert.
- Sicherheit:
- Minimiert das Risiko von Passwortdiebstahl und Phishing-Angriffen, da keine festen Passwörter verwendet werden.
- Links sind oft zeitlich begrenzt und können nur einmal verwendet werden.
- Geringere Passwortverwaltung:
- Benutzer müssen keine komplexen Passwörter erstellen oder ändern.
- Keine Notwendigkeit, Passwort-Reset-Prozesse durchzuführen.
- Zugänglichkeit:
- Benutzer können sich von jedem Gerät mit ihrer E-Mail-Adresse anmelden, ohne zusätzliche Informationen zu benötigen.
Nachteile von Magic Links
- Abhängigkeit von E-Mail:
- Benutzer müssen Zugriff auf ihre E-Mail haben, um sich anmelden zu können.
- Bei Problemen mit dem E-Mail-Dienst kann der Anmeldeprozess gestört werden.
- Sicherheitsrisiken bei E-Mail-Konten:
- Wenn das E-Mail-Konto eines Benutzers kompromittiert wird, können Angreifer sich leicht anmelden.
- E-Mail-Links können abgefangen oder weitergeleitet werden, wenn die E-Mail-Sicherheit nicht gewährleistet ist.
- Benutzerakzeptanz:
- Manche Benutzer sind möglicherweise nicht vertraut mit Magic Links und bevorzugen traditionelle Anmeldeverfahren.
- Kann als weniger vertrauenswürdig empfunden werden, wenn Benutzer nicht sicher sind, wie es funktioniert.
- E-Mail-Verzögerungen:
- Verzögerungen beim Empfang von E-Mails können den Anmeldeprozess verlangsamen.
- E-Mails könnten im Spam-Ordner landen, was den Zugriff erschwert.
Es bietet also klar sichtbar die Vorteile, aber auch die Nachteile, wohin sich die Nachteile jedoch stark beeinflussen lassen, so sollte man sein E-Mail Konto immer mit 2FA (2-Faktor-Authentifizierung) schützen und einen großen E-Mail-Anbieter nutzen, wie zum Beispiel Google Mail, welche das Knowhow und die Sicherheitsfunktionen anbieten, um Hacking Angriffe zu minimieren. E-Mail Verzögerungen liegen im schlimmsten Fall bei 1-5 Minuten, je nach E-Mail-Anbieter, geht meiner Erfahrung nach aber innerhalb weniger Sekunden ein.
Natürlich ist die Benutzerakzeptanz ein Problem, denn wer damit noch keine Erfahrung gemacht hat, wird sich schwerer damit zurechtfinden, da man den Webdienst nutzen möchte, aber gleichzeitig auch sein E-Mail-Konto geöffnet haben muss. Dennoch spart man sich die Gefahr, dass das Passwort beim Webdienst durch Hacking gestohlen wird und missbraucht werden kann, denn wenn es kein Passwort gibt, kann man keines stehlen. Und man spart sich das merken bzw. managen von mehreren Passwörtern.
Ich nutze daher in meinen eigenen Diensten, die ich entwickle, gerne die Möglichkeit Magic Links als anmelde Option zu implementieren.
Denn aus Entwicklersicht, sind Magic Links technisch einfacher und schneller zu realisieren, und das in verschiedenen Programmiersprachen, hingegen sind Passkeys meines Wissens nach nur mit Javascript realisierbar, weil die Abfrage im Browser Fenster auf der Client Seite ausgeführt werden muss
Weiterführende Quellen: