Implementieren von WebAuthn in Next.js: Ein praktischer Leitfaden
Ein praktischer Leitfaden zur Implementierung von WebAuthn in Next.js mit Live-Code-Beispielen.
Ein praktischer Leitfaden zur Implementierung von WebAuthn in Next.js mit Live-Code-Beispielen.
Willkommen zurück zu unserer WebAuthn-Serie. In unseren vorherigen Artikeln haben wir die Grundlagen von WebAuthn und einen 101-Leitfaden behandelt. Wenn du gerade erst zu uns stößt, schau dir diese grundlegenden Artikel an, um auf dem neuesten Stand zu sein.
Heute krempeln wir die Ärmel hoch, um Theorie in die Praxis umzusetzen. Wir nutzen die Kraft von Next.js mit der neuen Funktion „Serveraktionen“. Unser Ziel? WebAuthn in einer Next.js-Anwendung implementieren und bereit für WebAuthn sein.
Bevor wir in die Code-Tiefe eintauchen, hier ein Vorgeschmack darauf, was dich am Ende der Reise erwartet - eine vollständig funktionale Demo-Website. Erkunde sie, um WebAuthn in Aktion zu sehen und einen Vorgeschmack darauf zu bekommen, was du bauen wirst. Auf dieser Demo-Website kannst du neue Benutzer registrieren und dich mit den gerade registrierten Passkeys einloggen.

Und für diejenigen, die lieber eine Karte zur Hand haben, haben wir dich abgesichert! Der gesamte Code, den wir besprechen werden, ist in einem öffentlichen GitHub-Repository verfügbar. Dieses Repository ist dein Begleiter, der den vollständigen Quellcode unserer Implementierung bietet.
Bereit für dieses spannende Abenteuer? Lass uns beginnen!
Bevor wir beginnen, stellen wir sicher, dass wir alles haben, was wir brauchen:
@simplewebauthn/browser, @simplewebauthn/server und @simplewebauthn/typescript-types zu installieren.Mit unseren Werkzeugen und Materialien in der Hand sind wir bereit, mit dem Bau zu beginnen.
Es ist einfach, eine KV-Speicherung sowohl in der Produktion als auch in der lokalen Entwicklung zu initialisieren. Folge diesem Leitfaden, um einen KV-Speicher mit deinem Projekt zu verbinden und die Umgebungswerte abzurufen: https://vercel.com/docs/storage/vercel-kv/quickstart
Wir haben zwei Funktionen exportiert:
getCurrentSession: Verwende den Cookie-Helfer von Next.js, um eine Sitzung für die aktuelle Anfrage zu erstellen und den Wert zurückzugeben.updateCurrentSession: Speichert Daten in der aktuellen Sitzung.Ähnlich wie bei unserer Sitzung-Implementierung, lass uns eine einfache Benutzerdatenbank implementieren.
Wir haben Funktionen erstellt, um Benutzer nach E-Mail zu finden und Benutzerdaten nach E-Mail zu aktualisieren. Denke daran, dass dies nur zur Demonstration dient. Im echten Produkt werden die Benutzerdaten normalerweise in einer Datenbank gespeichert.
Bevor wir fortfahren, sehen wir uns das Diagramm des Registrierungs- und Authentifizierungsflusses an:
Wie du siehst, müssen wir 2 Funktionen vorbereiten:
generateWebAuthnRegistrationOptionsverifyWebAuthnRegistrationÄhnlich wie bei der Registrierung benötigt auch der Login 2 Funktionen:
generateWebAuthnLoginOptionsverifyWebAuthnLoginHier ist der Code:
Wir haben die Vorbereitung abgeschlossen, lass uns die Seite bauen:
Herzlichen Glückwunsch, dass du die Komplexität der Implementierung von WebAuthn in einer Next.js-Anwendung gemeistert hast. Wenn wir zum Schluss kommen, ist es wichtig, einige entscheidende Überlegungen für den Einsatz in einer Produktionsumgebung anzusprechen.
userId oder username.Vielen Dank, dass du uns auf diesem Bildungsabenteuer begleitet hast. Auch in diesem minimalen Beispiel ist die Integration von WebAuthn keine einfache Aufgabe, es gibt eine andere Möglichkeit, versuche WebAuthn in Logto's MFA: