Configurando a autenticação JWT Bearer
Configure a validação de tokens no pipeline.
Configurando a autenticação JWT Bearer é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 4 aulas no total.
O manipulador JWT Bearer
O ASP.NET Core valida os JWTs recebidos usando o manipulador de autenticação JWT Bearer do pacote Microsoft.AspNetCore.Authentication.JwtBearer.
Ele lê o token do cabeçalho Authorization: Bearer ..., valida-o e cria um ClaimsPrincipal.
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearerAddAuthentication
O registro começa com AddAuthentication. Você define o esquema padrão para que a estrutura saiba qual manipulador usar quando nenhum esquema for especificado.
JwtBearerDefaults.AuthenticationScheme é a cadeia de caracteres "Bearer".
builder.Services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer();Opções de AddJwtBearer
A sobrecarga de AddJwtBearer recebe um delegado de opções no qual você configura como os tokens serão validados.
A propriedade mais importante é TokenValidationParameters.
builder.Services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
// configured below
};
});Validando o emissor e o público-alvo
Defina ValidateIssuer e ValidateAudience para garantir que o token veio da sua autoridade confiável e foi destinado à sua API.
ValidIssuer e ValidAudience devem corresponder às declarações iss e aud no token.
var tvp = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = builder.Configuration["Jwt:Issuer"],
ValidateAudience = true,
ValidAudience = builder.Configuration["Jwt:Audience"]
};Validando a chave de assinatura
A verificação mais importante para a segurança é ValidateIssuerSigningKey com uma IssuerSigningKey. Isso confirma que a assinatura foi produzida com o seu segredo.
Para assinaturas simétricas (HS256), você cria uma SymmetricSecurityKey a partir dos bytes do segredo.
var key = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]!));
tvp.ValidateIssuerSigningKey = true;
tvp.IssuerSigningKey = key;Validando a duração
ValidateLifetime = true rejeita tokens expirados verificando as declarações exp e nbf.
ClockSkew adiciona tolerância para diferenças de horário entre os servidores. O padrão é de 5 minutos; reduza-o para tokens de curta duração.
tvp.ValidateLifetime = true;
tvp.ClockSkew = TimeSpan.FromSeconds(30);Reunindo tudo
Uma configuração completa, no estilo de produção, combina todos os parâmetros de validação em um só lugar.
builder.Services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = builder.Configuration["Jwt:Issuer"],
ValidateAudience = true,
ValidAudience = builder.Configuration["Jwt:Audience"],
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]!)),
ValidateLifetime = true,
ClockSkew = TimeSpan.FromSeconds(30)
};
});A ordem dos componentes intermediários
A configuração por si só não é suficiente. Você deve adicionar os componentes intermediários de autenticação e autorização ao fluxo, e a ordem é importante.
UseAuthentication deve vir antes de UseAuthorization.
var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();Protegendo os pontos de acesso
Depois de configurar tudo, marque os pontos de acesso com [Authorize] (controladores) ou .RequireAuthorization() (APIs mínimas) para exigir um token válido.
app.MapGet("/me", (ClaimsPrincipal user) =>
new { id = user.FindFirstValue(ClaimTypes.NameIdentifier) })
.RequireAuthorization();Usando uma autoridade confiável
Se os seus tokens vierem de um provedor de identidade externo (por exemplo, Microsoft Entra ID ou Auth0), defina Authority em vez de uma chave estática.
O manipulador baixará automaticamente as chaves de assinatura do documento de descoberta do provedor.
.AddJwtBearer(options =>
{
options.Authority = "https://login.myidp.com/";
options.Audience = "my-api";
// Keys are fetched from the OpenID configuration endpoint
});Lendo falhas de validação
O JWT Bearer gera eventos aos quais você pode se vincular para registrar eventos ou fornecer respostas personalizadas, como OnAuthenticationFailed e OnChallenge.
options.Events = new JwtBearerEvents
{
OnAuthenticationFailed = ctx =>
{
logger.LogWarning(ctx.Exception, "JWT validation failed");
return Task.CompletedTask;
}
};Verificação rápida
Verifique sua compreensão da configuração do fluxo.
Recapitulação
Você configurou a autenticação JWT Bearer:
AddAuthentication(...).AddJwtBearer(...)registra o manipulador.TokenValidationParameterscontrola as verificações do emissor, do público-alvo, da chave de assinatura e da duração.UseAuthentication()deve precederUseAuthorization().- Use
Authoritypara provedores externos de identidade.
Em seguida: como emitir seus próprios tokens.
Perguntas Frequentes
A aula “Configurando a autenticação JWT Bearer” é grátis?
Sim — o texto completo de “Configurando a autenticação JWT Bearer” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 4 aulas no total.
O que vou aprender em “Configurando a autenticação JWT Bearer”?
Configure a validação de tokens no pipeline. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C# Academy?
Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Configurando a autenticação JWT Bearer”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C# Academy?
Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Estrutura e declarações de JWT
- Configurando a autenticação JWT Bearer
- Emitindo tokens
- Tokens de atualização e expiração