Configuración de la autenticación JWT Bearer
Configure la validación de tokens en el pipeline.
Configuración de la autenticación JWT Bearer es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 4 lecciones en total.
El handler de JWT Bearer
ASP.NET Core valida los JWT entrantes mediante el handler de autenticación JWT Bearer del paquete Microsoft.AspNetCore.Authentication.JwtBearer.
Lee el token del encabezado Authorization: Bearer ..., lo valida y crea un ClaimsPrincipal.
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearerAddAuthentication
El registro comienza con AddAuthentication. Debe establecer el esquema predeterminado para que el framework sepa qué handler utilizar cuando no se especifica ningún esquema.
JwtBearerDefaults.AuthenticationScheme es la cadena "Bearer".
builder.Services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer();Opciones de AddJwtBearer
La sobrecarga de AddJwtBearer recibe un delegado de opciones donde se configura cómo se validan los tokens.
La propiedad más importante es TokenValidationParameters.
builder.Services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
// configured below
};
});Validación del emisor y la audiencia
Establezca ValidateIssuer y ValidateAudience para asegurarse de que el token procede de una autoridad de confianza y está destinado a su API.
ValidIssuer y ValidAudience deben coincidir con los claims iss y aud del token.
var tvp = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = builder.Configuration["Jwt:Issuer"],
ValidateAudience = true,
ValidAudience = builder.Configuration["Jwt:Audience"]
};Validación de la clave de firma
La comprobación más importante desde el punto de vista de la seguridad es ValidateIssuerSigningKey junto con IssuerSigningKey. Esto confirma que la firma se generó con su secreto.
Para la firma simétrica (HS256), debe crear una SymmetricSecurityKey a partir de los bytes del secreto.
var key = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]!));
tvp.ValidateIssuerSigningKey = true;
tvp.IssuerSigningKey = key;Validación de la duración
ValidateLifetime = true rechaza los tokens caducados comprobando los claims exp y nbf.
ClockSkew añade tolerancia para las diferencias de reloj entre servidores. El valor predeterminado es de 5 minutos; redúzcalo para los tokens de corta duración.
tvp.ValidateLifetime = true;
tvp.ClockSkew = TimeSpan.FromSeconds(30);Cómo unirlo todo
Una configuración completa, con un estilo apto para producción, combina todos los parámetros de validación en un mismo 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)
};
});El orden del middleware
La configuración por sí sola no es suficiente. Debe añadir el middleware de autenticación y autorización al pipeline, y el orden es importante.
UseAuthentication debe ir antes que UseAuthorization.
var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();Protección de endpoints
Una vez configurados, marque los endpoints con [Authorize] (controladores) o .RequireAuthorization() (minimal APIs) para exigir un token válido.
app.MapGet("/me", (ClaimsPrincipal user) =>
new { id = user.FindFirstValue(ClaimTypes.NameIdentifier) })
.RequireAuthorization();Uso de una autoridad de confianza
Si los tokens proceden de un proveedor de identidad externo (por ejemplo, Microsoft Entra ID o Auth0), establezca Authority en lugar de una clave estática.
A continuación, el handler descarga automáticamente las claves de firma del documento de descubrimiento del proveedor.
.AddJwtBearer(options =>
{
options.Authority = "https://login.myidp.com/";
options.Audience = "my-api";
// Keys are fetched from the OpenID configuration endpoint
});Lectura de los errores de validación
JWT Bearer genera eventos que puede interceptar para registrar información o crear respuestas personalizadas, como OnAuthenticationFailed y OnChallenge.
options.Events = new JwtBearerEvents
{
OnAuthenticationFailed = ctx =>
{
logger.LogWarning(ctx.Exception, "JWT validation failed");
return Task.CompletedTask;
}
};Comprobación rápida
Compruebe cuánto domina la configuración del pipeline.
Resumen
Ha configurado la autenticación JWT Bearer:
AddAuthentication(...).AddJwtBearer(...)registra el handler.TokenValidationParameterscontrola las comprobaciones del emisor, la audiencia, la clave de firma y la duración.UseAuthentication()debe preceder aUseAuthorization().- Utilice
Authoritypara los proveedores de identidad externos.
A continuación: cómo emitir sus propios tokens.
Preguntas frecuentes
¿La lección «Configuración de la autenticación JWT Bearer» es gratis?
Sí — el texto completo de «Configuración de la autenticación JWT Bearer» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Configuración de la autenticación JWT Bearer»?
Configure la validación de tokens en el pipeline. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C# Academy?
No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Configuración de la autenticación JWT Bearer»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C# Academy?
Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Estructura y claims de JWT
- Configuración de la autenticación JWT Bearer
- Emisión de tokens
- Tokens de actualización y caducidad