0Pricing
C# Academy · Aula

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.JwtBearer

AddAuthentication

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.
  • TokenValidationParameters controla as verificações do emissor, do público-alvo, da chave de assinatura e da duração.
  • UseAuthentication() deve preceder UseAuthorization().
  • Use Authority para 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

  1. Estrutura e declarações de JWT
  2. Configurando a autenticação JWT Bearer
  3. Emitindo tokens
  4. Tokens de atualização e expiração
← Voltar para C# Academy