.NET 10
- Apresentando o recurso passkey
![]() |
O recurso de passkeys no ASP.NET Core Identity é uma das novidades mais interessantes e relevantes do .NET 10, e, hoje vou apresentar este recurso. |
Com o .NET 10, uma das novidades mais significativas é o suporte nativo para passkeys (chaves de acesso) diretamente no ASP.NET Core Identity. Este recurso representa um passo crucial em direção a um futuro sem senhas, oferecendo um método de autenticação mais seguro, rápido e resistente a phishing.
O Que São Passkeys e Por Que São Importantes?
Uma passkey é uma credencial digital que substitui a necessidade de senhas tradicionais. Em vez de memorizar uma combinação de caracteres, o usuário utiliza a biometria (como Face ID, Touch ID, Windows Hello) ou um PIN do dispositivo para se autenticar.
Conceito Central: Criptografia Assimétrica
O funcionamento das passkeys é baseado em criptografia de chave pública-privada, um padrão robusto promovido pela FIDO Alliance e pelo W3C. O processo se divide em duas etapas principais:
1- Registro: Quando um usuário cria uma passkey
para um site ou aplicativo, o dispositivo (como um smartphone ou notebook) gera
um par de chaves criptográficas.
a-) A
chave privada é armazenada de forma segura no dispositivo e
nunca sai de lá. Ela é protegida por hardware especializado, como o Secure
Enclave da Apple ou o TPM do Windows.
b-)
A chave pública é enviada para o servidor da aplicação e
associada à conta do usuário.
2- Autenticação: Para fazer login, o servidor envia um "desafio" para o dispositivo. O dispositivo usa a chave privada para "assinar" esse desafio, provando a identidade do usuário sem nunca expor a chave. O servidor, por sua vez, verifica essa assinatura usando a chave pública que ele armazenou.
Principais Vantagens:
Resistência a Phishing: Como a chave privada nunca
é transmitida pela rede e está vinculada ao domínio do site, é praticamente
impossível para um invasor roubá-la através de ataques de phishing.
Segurança Aprimorada: Elimina o risco de vazamento de senhas,
pois o servidor armazena apenas a chave pública, que é inútil sem sua
contraparte privada.
Experiência do Usuário Simplificada: O login se torna mais rápido e fácil, sem a necessidade de lembrar ou digitar senhas complexas.
Sincronização entre Dispositivos: Grandes provedores como Apple, Google e Microsoft permitem que as passkeys sejam sincronizadas na nuvem (via iCloud Keychain ou Gerenciador de Senhas do Google), permitindo que o usuário acesse suas contas de qualquer um de seus dispositivos.
Onde e Quando usar Passkeys ?
As passkeys são ideais para qualquer aplicação que exija autenticação de usuários, desde e-commerces e redes sociais até sistemas corporativos internos. Elas devem ser consideradas como o método de autenticação primário ou, no mínimo, uma alternativa moderna e segura às senhas.
Com a adoção crescente por gigantes da tecnologia, os usuários estão se familiarizando com essa forma de login. Oferecer suporte a passkeys não é apenas um avanço em segurança, mas também uma melhoria na experiência do usuário que muitos já esperam encontrar.
Passkeys no .NET 10: O Que Mudou?
Antes do .NET 10, a implementação de passkeys (baseadas no padrão WebAuthn) em aplicações ASP.NET Core exigia o uso de bibliotecas de terceiros, como a fido2-net-lib, e uma configuração manual considerável.
O .NET 10 simplifica drasticamente esse processo ao integrar o suporte a WebAuthn diretamente no ASP.NET Core Identity.
As principais novidades são:
Habilitação por Padrão: O
suporte a passkeys pode ser ativado com uma única linha de código.
Integração com a UI do Identity: Os templates de projeto, como
o Blazor Web App, já incluem botões e páginas para "Entrar com uma Passkey" e
"Registrar uma Passkey".
Armazenamento Integrado: As credenciais de passkey são vinculadas aos usuários do Identity sem a necessidade de criar modelos de dados adicionais no Entity Framework
Habilitando Passkeys em uma Aplicação Blazor no .NET 10
Vamos ver como é simples adicionar suporte a passkeys em uma nova aplicação Blazor Web App com contas individuais.
Pré-requisitos:
- SDK do .NET 10 (Preview/RC1
ou superior).
- Um dispositivo com um autenticador, como Windows Hello (biometria ou PIN),
Touch ID/Face ID em um Mac, ou um leitor de impressão digital em um celular.(Ou
testar usando o navegador)
Criando o Projeto
AbraEu vou usar o VS 2026 Insiders e criar um novo projeto
usando o template Blazor Web App com o nome
MinhaAppComPasskeys
Você pode também abrir um terminal de comandos e executar o seguinte comando para criar uma nova Blazor Web App com autenticação individual. A seguir pode prosseguir usando o VS Code como editor de código.
dotnet new blazor --auth
Individual -n MinhaAppComPasskeys
|
Agora abra o arquivo Program.cs e localize a configuração do AddIdentityCore.
builder.Services.AddIdentityCore<ApplicationUser>(options => { // Exige que o usuário confirme seu e-mail antes de poder fazer login. options.SignIn.RequireConfirmedAccount = true; // ESTA É A LINHA IMPORTANTE E NOVA! // Define a versão do esquema do banco de dados do Identity. // A versão 3 é necessária para suportar as tabelas de passkeys. options.Stores.SchemaVersion = IdentitySchemaVersions.Version3; }) .AddEntityFrameworkStores<ApplicationDbContext>() .AddSignInManager() .AddDefaultTokenProviders(); |
O template do Blazor Web App já vem com essa linha por padrão no .NET 10, o que significa que o suporte a passkeys já está habilitado no código desde o início!.Vamos entender o código:
AddIdentityCore<ApplicationUser>: Esta é a versão mais "enxuta"
para configurar o Identity. Ela adiciona os serviços principais de gerenciamento
de usuários (UserManager), mas não inclui cookies de
autenticação, gerenciamento de roles ou o SignInManager por padrão. É ideal para
cenários de API ou quando você quer controle total.
options.Stores.SchemaVersion = IdentitySchemaVersions.Version3; : Esta
é a novidade crucial no .NET 10. Em vez de uma flag booleana como
options.Passkeys.Enabled, a equipe do ASP.NET Core optou por uma
abordagem baseada na versão do esquema do banco de dados. Ao definir a versão
para Version3, você está sinalizando para o Entity Framework e
para o Identity que o banco de dados deve incluir as novas tabelas e colunas
necessárias para o suporte a WebAuthn (passkeys). Isso habilita
implicitamente o recurso.
.AddEntityFrameworkStores<ApplicationDbContext>(): Conecta o Identity
ao seu banco de dados via Entity Framework.
.AddSignInManager():
Adiciona o SignInManager, que é essencial para gerenciar as operações de login e
logout, incluindo o fluxo de cookies.
.AddDefaultTokenProviders():
Adiciona os provedores para gerar tokens (ex: para confirmação de e-mail, reset
de senha).
Com o Identity configurado, precisamos criar as tabelas no banco de dados para armazenar os dados dos usuários e as informações das passkeys. Vamos usar a ferramenta dotnet ef que tem que estar instalada.
Estando na pasta do projeto execute o comando : dotnet ef database update
Isso vai criar o arquivo de banco de dados (por padrão, um
app.db
SQLite) com todas as
tabelas necessárias (AspNetUsers
,
AspNetUserTokens
,
etc.).
Testando o projeto criado
Após concluir esta etapa podemos excutar o projeto onde iremos obter a seguinte página:
Acesse a aplicação em seu navegador (lembre-se de usar
HTTPS, pois é um requisito para WebAuthn).
Registre um novo
usuário: Crie uma conta normalmente, com e-mail e senha.
Gerencie sua conta: Após o login, vá para a página de gerenciamento de conta (geralmente em /Account/Manage). Você verá uma nova opção para registrar uma passkey.
Registre a Passkey: Ao clicar para registrar, seu navegador e sistema operacional solicitarão que você use seu método de autenticação (Windows Hello, Touch ID, PIN, etc.) para criar e salvar a chave.
Para o nosso exemplo será usado um PIN que deve ser informado na tela: Salvar sua chave de acesso
A seguir você deve informar um nome para a passkey criada:
Faça Login com a Passkey: Faça logout e volte para a página de login. Agora, você pode usar o botão "Sign in with a Passkey". O sistema pedirá novamente a verificação biométrica ou PIN, e você estará autenticado sem digitar nenhuma senha.
Pronto agora basta fazer o login informando o seu PIN (para o nosso exemplo):
Desta forma, o suporte nativo a passkeys no .NET 10 é um marco para os desenvolvedores ASP.NET Core. Ele remove a complexidade de implementação, permitindo que qualquer aplicação adote facilmente um dos métodos de autenticação mais seguros e modernos disponíveis.
Ao alinhar-se com os padrões da indústria e as expectativas dos usuários, a Microsoft está capacitando os desenvolvedores a construir aplicações mais seguras e com uma experiência de usuário superior, pavimentando o caminho para um futuro verdadeiramente sem senhas.
E estamos conversados...
"Trabalhai, não pela comida que perece, mas pela comida que permanece para a
vida eterna, a qual o Filho do homem vos dará; porque a este o Pai, Deus, o
selou."
João 6:27
Referências:
NET - Unit of Work - Padrão Unidade de ...