Implementando WebAuthn em Next.js: Um Guia Prático
Um guia prático para implementar WebAuthn em Next.js com exemplos de código ao vivo.
Um guia prático para implementar WebAuthn em Next.js com exemplos de código ao vivo.
Bem-vindo de volta à nossa série sobre WebAuthn. Nos nossos artigos anteriores, cobrimos os fundamentos do WebAuthn, e um guia 101. Se estás a juntar-te a nós agora, não hesites em verificar estes conteúdos fundamentais para te atualizares.
Hoje, vamos arregaçar as mangas para colocar a teoria em prática. Vamos aproveitar o poder do Next.js com o novo recurso “Server Actions”. O nosso objectivo? Implementar WebAuthn numa aplicação Next.js e nos prepararmos para WebAuthn.
Antes de mergulharmos no mundo do código, aqui está uma visão do que te aguarda no final da jornada - um site de demonstração totalmente funcional. Explora-o para ver o WebAuthn em ação e obter uma ideia do que irás construir. Neste site de demonstração, podes registar novos utilizadores e fazer login com as chaves de acesso recém-registadas.

E para aqueles que preferem ter um mapa em mãos, temos tudo pronto para ti! Todo o código que discutiremos está disponível num repositório público GitHub. Este repositório é o teu guia de acompanhamento, oferecendo o código fonte completo de nossa implementação.
Pronto para embarcar nesta emocionante aventura? Vamos começar!
Antes de começarmos, vamos garantir que temos tudo o que precisamos:
@simplewebauthn/browser, @simplewebauthn/server e @simplewebauthn/typescript-typesAgora, com nossas ferramentas e materiais em mãos, estamos prontos para começar a construir.
É fácil inicializar um armazenamento KV tanto em produção quanto em desenvolvimento local. Siga este guia para conectar uma loja KV ao teu projeto e obter os valores do ambiente: https://vercel.com/docs/storage/vercel-kv/quickstart
Exportámos 2 funções:
getCurrentSession: Usar o auxiliar de cookies do Next.js para criar uma sessão para o pedido atual e retornar o valor.updateCurrentSession: Guardar dados na sessão atual.De forma semelhante à nossa implementação de sessão, vamos implementar uma base de dados de utilizadores simples.
Criámos funções para encontrar o utilizador por email e atualizar os dados do utilizador por email. Lembra-te, isto é apenas para demonstração, num produto real, os dados do utilizador são guardados normalmente numa base de dados.
Antes de prosseguirmos, vejamos o diagrama do fluxo de registo e autenticação:
Como podes ver, precisamos preparar 2 funções:
generateWebAuthnRegistrationOptionsverifyWebAuthnRegistrationSemelhante ao registo, o login requer 2 funções:
generateWebAuthnLoginOptionsverifyWebAuthnLoginAqui está o código:
Concluímos a preparação, vamos construir a página:
Parabéns por navegares através das complexidades de implementar WebAuthn numa aplicação Next.js. Ao terminarmos, é importante abordar algumas considerações cruciais para o seu uso num ambiente de produção.
userId ou username.Obrigado por te juntares a nós nesta aventura educacional. Mesmo neste exemplo mínimo, integrar o WebAuthn não é uma tarefa simples, existe outra opção, tenta o WebAuthn no MFA da Logto: