SlideShare una empresa de Scribd logo
1 de 17
Hugo Biarge
Software Engineer at adidas
hugo.biarge@adidas.com
@hbiarge
Agenda
• De dónde venimos
• Authorization Policies
• Requerimientos sencillos basados en información del usuario
• Requerimientos basados en código
• Autorización en función del estado del recurso
• Uso de diferentes esquemas
https://github.com/hbiarge/Authorization-Workshop
Authentication vs Authorization
Autenticación
Identificar elementos de autenticación en la petición, interpretarlos y
crear instancia de ClaimsPrincipal con los claims del usuario
Autorización
En base a los claims del usuario (y del estado del recurso al que
accede), que información puede obtener y/o qué acciones puede
realizar
De dónde venimos
• [Authorize] y [AllowAnonymous] en WebApi y MVC de full
Framework
• Único mecanismo existente “out of the box”
• Soporte de roles y usuarios
• Implementado como un filtro de Autenticación
• Determina el momento del procesamiento de la petición en el que el código se ejecuta
ClaimsPrincipal and ClaimsIdentity
• ClaimsPrincipal agrega los Claims de una o varias identidades con las
que se puede haber autenticado la petición
• Cada ClaimsIdentity contiene el conjunto de Claims de un esquema
de autenticación
• Un Claim es una estructura que define:
• Name: Clave (puede haber duplicados)
• Value: Valor
• Issuer: Quién lo ha emitido
Setup de los ejemplos
• TestHost
• Acheve.TestHost.Security
Pero… en .Net Core es igual, no?
• [Authorize] y [AllowAnonymous] también existen en .Net Core
• Hace que el uso básico de los atributos tenga el mismo resultado que en
versions anteriores
• La infraestructura subyacente es completamente nueva
• Soporta solo Roles (por motivos de compatibilidad) y Policies
Políticas de autorización
• Compuestas por uno o más Requirements
• Un Requirement es gestionado por uno o más Handlers
• Una Política será satisfecha (autorizada) si TODOS los Requirements
son autorizados
• Un Requirement está autorizado si por lo menos uno de sus Handlers lo
autoriza
• Por defecto, se evalúan todos los Handlers registrados para un
Requirement aunque alguno falle
Infraestructura de autorización
• Requirements y Handlers
• IAuthorizationRequirement
• AuthorizationHandler<IAuthorizationRequirement>
• AuthorizationHandler<IAuthorizationRequirement, Resource>
• El Requirement define el contexto de autorización
• Proporciona el estado
• El Handler define la lógica de autorización teniendo en cuenta:
• Contexto de autorización
• Requirement
• (opcionalmente) El recurso a autorizar
Lógica de autorización (Handlers)
• Si la autorización es correcta -> context.Succeed(requirement)
• Si la autorización NO es correcta -> no hacer nada!
• Puede haber otros Handlers para el mismo Requirement
• Sólo en casos extremos -> context.Fail()
Políticas sencillas
// In Startup ConfigureServices
services.AddAuthorization(options =>
{
options.AddPolicy("RequireAdministration", policy =>
{
policy.RequireRole("Administration");
policy.RequireClaim("Management");
policy.RequireClaim("OneOfMany", "a", "b");
});
});
Políticas como código
public class MinimumAgeRequirement
: AuthorizationHandler<MinimumAgeRequirement>, IAuthorizationRequirement
{
protected override void Handle(
AuthorizationContext context, MinimumAgeRequirement requirement)
{
// Logic to validate requirement
context.Succeed(requirement);
}
}
// In Startup ConfigureServices
options.AddPolicy("Over18Only", policy =>
{
policy.Requirements.Add(new MinimumAgeRequirement(18));
});
Autorización imperativa
IAuthorizationService en Controladores o Vistas
public async Task<IActionResult> Index()
{
if (await _authorizationService.AuthorizeAsync(User, Policies.Over21))
{
// User is authorized here.
}
else
{
return new ChallengeResult();
}
}
Autorización basada en recursos
• AuthorizationHandler<Requirement, Resource>
• En el método Handle tenemos acceso al recurso de forma tipada
public class ProductAuthorizationHandler
: AuthorizationHandler<OperationAuthorizationRequirement, Product>
{
protected override void Handle(
AuthorizationContext context,
OperationAuthorizationRequirement requirement,
Product resource)
{ // Logic to validate requirement }
}
Diferentes esquemas de autorización
• Podemos definirlos tanto en las políticas como en el atributo
[Authorize]
• Mezcla en el ClaimsPrincipal una ClaimsIdentity por cada esquema
requerido
• El ClaimsPrincipal expone todos los claims agregados de todos los
ClaimsIdentity definidos
• Redefine el esquema de autenticación predefinido
Gracias!
¿Preguntas?

Más contenido relacionado

Destacado

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Destacado (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Authorization in.Net Core

  • 1.
  • 2. Hugo Biarge Software Engineer at adidas hugo.biarge@adidas.com @hbiarge
  • 3. Agenda • De dónde venimos • Authorization Policies • Requerimientos sencillos basados en información del usuario • Requerimientos basados en código • Autorización en función del estado del recurso • Uso de diferentes esquemas https://github.com/hbiarge/Authorization-Workshop
  • 4. Authentication vs Authorization Autenticación Identificar elementos de autenticación en la petición, interpretarlos y crear instancia de ClaimsPrincipal con los claims del usuario Autorización En base a los claims del usuario (y del estado del recurso al que accede), que información puede obtener y/o qué acciones puede realizar
  • 5. De dónde venimos • [Authorize] y [AllowAnonymous] en WebApi y MVC de full Framework • Único mecanismo existente “out of the box” • Soporte de roles y usuarios • Implementado como un filtro de Autenticación • Determina el momento del procesamiento de la petición en el que el código se ejecuta
  • 6. ClaimsPrincipal and ClaimsIdentity • ClaimsPrincipal agrega los Claims de una o varias identidades con las que se puede haber autenticado la petición • Cada ClaimsIdentity contiene el conjunto de Claims de un esquema de autenticación • Un Claim es una estructura que define: • Name: Clave (puede haber duplicados) • Value: Valor • Issuer: Quién lo ha emitido
  • 7. Setup de los ejemplos • TestHost • Acheve.TestHost.Security
  • 8. Pero… en .Net Core es igual, no? • [Authorize] y [AllowAnonymous] también existen en .Net Core • Hace que el uso básico de los atributos tenga el mismo resultado que en versions anteriores • La infraestructura subyacente es completamente nueva • Soporta solo Roles (por motivos de compatibilidad) y Policies
  • 9. Políticas de autorización • Compuestas por uno o más Requirements • Un Requirement es gestionado por uno o más Handlers • Una Política será satisfecha (autorizada) si TODOS los Requirements son autorizados • Un Requirement está autorizado si por lo menos uno de sus Handlers lo autoriza • Por defecto, se evalúan todos los Handlers registrados para un Requirement aunque alguno falle
  • 10. Infraestructura de autorización • Requirements y Handlers • IAuthorizationRequirement • AuthorizationHandler<IAuthorizationRequirement> • AuthorizationHandler<IAuthorizationRequirement, Resource> • El Requirement define el contexto de autorización • Proporciona el estado • El Handler define la lógica de autorización teniendo en cuenta: • Contexto de autorización • Requirement • (opcionalmente) El recurso a autorizar
  • 11. Lógica de autorización (Handlers) • Si la autorización es correcta -> context.Succeed(requirement) • Si la autorización NO es correcta -> no hacer nada! • Puede haber otros Handlers para el mismo Requirement • Sólo en casos extremos -> context.Fail()
  • 12. Políticas sencillas // In Startup ConfigureServices services.AddAuthorization(options => { options.AddPolicy("RequireAdministration", policy => { policy.RequireRole("Administration"); policy.RequireClaim("Management"); policy.RequireClaim("OneOfMany", "a", "b"); }); });
  • 13. Políticas como código public class MinimumAgeRequirement : AuthorizationHandler<MinimumAgeRequirement>, IAuthorizationRequirement { protected override void Handle( AuthorizationContext context, MinimumAgeRequirement requirement) { // Logic to validate requirement context.Succeed(requirement); } } // In Startup ConfigureServices options.AddPolicy("Over18Only", policy => { policy.Requirements.Add(new MinimumAgeRequirement(18)); });
  • 14. Autorización imperativa IAuthorizationService en Controladores o Vistas public async Task<IActionResult> Index() { if (await _authorizationService.AuthorizeAsync(User, Policies.Over21)) { // User is authorized here. } else { return new ChallengeResult(); } }
  • 15. Autorización basada en recursos • AuthorizationHandler<Requirement, Resource> • En el método Handle tenemos acceso al recurso de forma tipada public class ProductAuthorizationHandler : AuthorizationHandler<OperationAuthorizationRequirement, Product> { protected override void Handle( AuthorizationContext context, OperationAuthorizationRequirement requirement, Product resource) { // Logic to validate requirement } }
  • 16. Diferentes esquemas de autorización • Podemos definirlos tanto en las políticas como en el atributo [Authorize] • Mezcla en el ClaimsPrincipal una ClaimsIdentity por cada esquema requerido • El ClaimsPrincipal expone todos los claims agregados de todos los ClaimsIdentity definidos • Redefine el esquema de autenticación predefinido