Implementare WebAuthn in Next.js: Una Guida Pratica
Una guida pratica per implementare WebAuthn in Next.js con esempi di codice live.
Una guida pratica per implementare WebAuthn in Next.js con esempi di codice live.
Bentornati alla nostra serie su WebAuthn. Nei nostri articoli precedenti, abbiamo trattato le basi di WebAuthn, e una guida 101. Se vi state unendo a noi per la prima volta, sentitevi liberi di controllare questi articoli fondamentali per mettervi al passo.
Oggi ci rimbocchiamo le maniche per mettere in pratica la teoria. Stiamo per sfruttare la potenza di Next.js con la nuova funzionalità "Server Actions". Il nostro obiettivo? Implementare WebAuthn in un'applicazione Next.js, e prepararci per WebAuthn.
Prima di tuffarci nel mare del codice, ecco uno sguardo a ciò che ti aspetta alla fine del viaggio: un sito demo completamente funzionante. Esploralo per vedere WebAuthn in azione e avere un assaggio di ciò che costruirai. In questo sito demo, puoi registrare nuovi utenti e accedere con le chiavi di accesso appena registrate.

E per coloro che preferiscono avere una mappa in mano, abbiamo pensato a voi! Tutto il codice di cui discuteremo è disponibile in un repository GitHub pubblico. Questo repository è il vostro compagno di viaggio, offrendo il codice sorgente completo della nostra implementazione.
Pronti a intraprendere questa emozionante avventura? Cominciamo!
Prima di iniziare, assicuriamoci di avere tutto ciò di cui abbiamo bisogno:
@simplewebauthn/browser, @simplewebauthn/server e @simplewebauthn/typescript-types.Ora, con i nostri strumenti e materiali a portata di mano, siamo pronti per iniziare a costruire.
È facile inizializzare uno storage KV sia in produzione che nello sviluppo locale, segui questa guida per collegare un archivio KV al tuo progetto e ottenere i valori dell'ambiente: https://vercel.com/docs/storage/vercel-kv/quickstart
Abbiamo esportato 2 funzioni:
getCurrentSession: Usa l'aiuto dei cookie di Next.js per creare una sessione per la richiesta corrente e restituire il valore.updateCurrentSession: Salva i dati nella sessione corrente.Allo stesso modo della nostra implementazione delle sessioni, implementiamo un semplice database utenti.
Abbiamo creato funzioni per trovare l'utente tramite email e aggiornare i dati dell'utente tramite email. Ricorda, questo è solo a scopo dimostrativo, nel prodotto reale solitamente i dati degli utenti vengono mantenuti in un database.
Prima di procedere, vediamo il diagramma del flusso di registrazione e autenticazione:
Come puoi vedere, dobbiamo preparare 2 funzioni:
generateWebAuthnRegistrationOptionsverifyWebAuthnRegistrationSimilmente alla registrazione, l'accesso richiede 2 funzioni:
generateWebAuthnLoginOptionsverifyWebAuthnLoginEcco il codice:
Abbiamo completato la preparazione, costruiamo la pagina:
Congratulazioni per aver navigato attraverso le complessità dell'implementazione di WebAuthn in un'applicazione Next.js. Mentre concludiamo, è importante affrontare alcune considerazioni cruciali per il suo deployment in un ambiente di produzione.
userId o username.Grazie per averci seguito in questa avventura educativa. Anche in questo esempio minimale, integrare WebAuthn non è un compito semplice. C'è un'altra opzione, prova WebAuthn nel MFA di Logto: