Implementacja WebAuthn w Next.js: Praktyczny Przewodnik
Praktyczny przewodnik po implementacji WebAuthn w Next.js z przykładami kodu na żywo.
Praktyczny przewodnik po implementacji WebAuthn w Next.js z przykładami kodu na żywo.
Witamy ponownie w naszej serii o WebAuthn. W poprzednich artykułach omówiliśmy podstawy WebAuthn oraz wprowadzenie 101. Jeśli dopiero do nas dołączasz, zapraszam do zapoznania się z tymi podstawowymi materiałami, aby dogonić temat.
Dziś zakaszemy rękawy, by wcielić teorię w praktykę. Wykorzystamy możliwości Next.js z nową funkcją „Server Actions”. Nasz cel? Zaimplementować WebAuthn w aplikacji Next.js i przygotować się na WebAuthn.
Zanim zanurzymy się w morzu kodu, oto przedsmak tego, co czeka nas na końcu podróży - w pełni funkcjonalna demo strona. Zobacz WebAuthn w akcji i wypróbuj to, co będziesz budować. Na tej stronie demo możesz zarejestrować nowych użytkowników i zalogować się przy użyciu świeżo zarejestrowanych passkey.

A dla tych, którzy wolą mieć mapę pod ręką, mamy cię pokryty! Cały kod, o którym będziemy mówić, jest dostępny w publicznym repozytorium GitHub. To repozytorium będzie twoim przewodnikiem, oferując pełny kod źródłowy naszej implementacji.
Gotowy na tę ekscytującą przygodę? Zaczynajmy!
Zanim zaczniemy, upewnijmy się, że mamy wszystko, czego potrzebujemy:
@simplewebauthn/browser, @simplewebauthn/server i @simplewebauthn/typescript-typesTeraz, gdy mamy narzędzia i materiały w ręku, jesteśmy gotowi do rozpoczęcia budowy.
Łatwo jest zainicjować przechowywanie KV zarówno w produkcji, jak i w lokalnym środowisku deweloperskim, postępuj zgodnie z tym przewodnikiem, aby połączyć sklep KV z projektem i pobrać wartości środowisk: https://vercel.com/docs/storage/vercel-kv/quickstart
Wyeksportowaliśmy 2 funkcje:
getCurrentSession: Użyj pomocnika cookies Next.js, aby utworzyć sesję dla bieżącego zapytania i zwrócić wartość.updateCurrentSession: Zapisz dane w bieżącej sesji.Podobnie jak w przypadku implementacji sesji, zaimplementujmy prostą bazę danych użytkowników.
Stworzyliśmy funkcje do wyszukiwania użytkownika po e-mailu oraz aktualizowania danych użytkownika po e-mailu. Pamiętaj, że to tylko do celów demonstracyjnych, w rzeczywistym produkcie dane użytkownika zwykle są przechowywane w bazie danych.
Zanim przejdziemy dalej, popatrzmy na diagram rejestracji i przepływu autoryzacji:
Jak widać, musimy przygotować 2 funkcje:
generateWebAuthnRegistrationOptionsverifyWebAuthnRegistrationPodobnie jak w rejestracji, logowanie wymaga 2 funkcji:
generateWebAuthnLoginOptionsverifyWebAuthnLoginOto kod:
Zakończyliśmy przygotowania, zbudujmy stronę:
Gratulacje za nawigację przez zawiłości implementacji WebAuthn w aplikacji Next.js. Kończąc, ważne jest, aby poruszyć kilka kluczowych aspektów związanych z wdrożeniem w środowisku produkcyjnym.
userId lub username.Dziękujemy za dołączenie do nas na tej edukacyjnej wyprawie. Nawet w tym minimalistycznym przykładzie integracja WebAuthn nie jest prostym zadaniem, jest inna opcja, wypróbuj WebAuthn w MFA Logto: