Autorización basada en claims
Autorice en función de los claims de los usuarios.
Autorización basada en claims 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.
Más allá de los roles
Los roles son un caso particular de los claims. La autorización basada en claims comprueba cualquier claim —correo electrónico, departamento, nivel de suscripción, un indicador de permisos—, no solo los roles.
Esto le proporciona un control más preciso sin tener que inventar decenas de roles.
// Claims a user might carry:
// department = sales
// subscription = pro
// email_verified = trueAñadir claims a un token
Emita los claims que vayan a inspeccionar sus reglas de autorización. El claim es un par de tipo y valor.
var claims = new List<Claim>
{
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
new Claim("department", "sales"),
new Claim("subscription", "pro"),
new Claim("email_verified", "true")
};Definir una política de claims
Las reglas basadas en claims se expresan como políticas con nombre registradas mediante AddAuthorization. RequireClaim exige que el usuario tenga un claim determinado.
builder.Services.AddAuthorization(options =>
{
options.AddPolicy("VerifiedEmail", policy =>
policy.RequireClaim("email_verified", "true"));
});RequireClaim sin valor
Si solo le importa que el claim exista (con cualquier valor), llame a RequireClaim indicando únicamente el tipo.
options.AddPolicy("HasDepartment", policy =>
policy.RequireClaim("department"));RequireClaim con valores permitidos
Puede indicar una lista de valores permitidos; la política se cumple si el claim coincide con cualquiera de ellos.
options.AddPolicy("PaidTier", policy =>
policy.RequireClaim("subscription", "pro", "enterprise"));Aplicar una política de claims
Haga referencia a la política por su nombre en [Authorize].
[Authorize(Policy = "PaidTier")]
[HttpGet("premium-reports")]
public IActionResult Reports() => Ok();Uso con Minimal API
Las Minimal APIs hacen referencia al mismo nombre de política mediante RequireAuthorization.
app.MapGet("/premium-reports", () => Results.Ok())
.RequireAuthorization("PaidTier");Combinar varios requisitos de claims
Una política puede encadenar varias llamadas a RequireClaim; todas deben cumplirse (AND).
options.AddPolicy("VerifiedSales", policy =>
policy
.RequireClaim("email_verified", "true")
.RequireClaim("department", "sales"));RequireAssertion para lógica personalizada
Cuando una comprobación de valor fijo no es suficiente, RequireAssertion ejecuta un predicado arbitrario sobre ClaimsPrincipal.
options.AddPolicy("AdultUser", policy =>
policy.RequireAssertion(ctx =>
{
var dob = ctx.User.FindFirst("birthdate")?.Value;
return DateTime.TryParse(dob, out var d) &&
d <= DateTime.UtcNow.AddYears(-18);
}));Leer claims en tiempo de ejecución
Dentro de una acción también puede inspeccionar directamente los claims cuando necesita el valor, no solo una condición de sí o no.
var dept = User.FindFirst("department")?.Value;
var isPro = User.HasClaim("subscription", "pro");Claims frente a roles: cuándo usar cada uno
Use los roles para funciones laborales generales. Use los claims para atributos e indicadores de funcionalidades. Se pueden combinar: una política puede exigir un rol y varios claims a la vez.
options.AddPolicy("SalesManager", policy =>
policy.RequireRole("manager")
.RequireClaim("department", "sales"));Comprobación rápida
Confirme que comprende las políticas de claims.
Resumen
Ha aprendido la autorización basada en claims:
- Cualquier claim, no solo los roles, puede controlar el acceso.
RequireClaimcomprueba la existencia o determinados valores permitidos.RequireAssertiongestiona la lógica de predicados personalizada.- Los claims y los roles se pueden combinar dentro de una única política con nombre.
Siguiente: el modelo completo basado en políticas.
Preguntas frecuentes
¿La lección «Autorización basada en claims» es gratis?
Sí — el texto completo de «Autorización basada en claims» 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 «Autorización basada en claims»?
Autorice en función de los claims de los usuarios. 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 «Autorización basada en claims»?
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
- Autorización basada en roles
- Autorización basada en claims
- Autorización basada en políticas
- Requisitos de autorización personalizados