0Pricing
C# Academy · Lección

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 = true

Añ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.
  • RequireClaim comprueba la existencia o determinados valores permitidos.
  • RequireAssertion gestiona 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

  1. Autorización basada en roles
  2. Autorización basada en claims
  3. Autorización basada en políticas
  4. Requisitos de autorización personalizados
← Volver a C# Academy