¿Cuáles son las afirmaciones en ASP .NET Identity


174

¿Alguien puede explicar qué significa el mecanismo de reclamo en el nuevo ASP.NET Identity Core?

Como puedo ver, hay una AspNetUserLoginstabla que contiene UserId, LoginProvidery ProviderKey.

Pero, todavía no puedo entender o encontrar información sobre cuándo se agregan datos a la AspNetUserClaimstabla y para qué situaciones se utiliza esta tabla.

Respuestas:


207

¿Qué significa el mecanismo de reclamo en el nuevo ASP.NET Identity Core?

Existen dos enfoques de autorización comunes que se basan en Role y Claim.

Seguridad basada en roles

Se asigna un usuario a uno o más roles a través de los cuales el usuario obtiene derechos de acceso. Además, al asignar un usuario a un rol, el usuario obtiene inmediatamente todos los derechos de acceso definidos para ese rol.

Seguridad basada en reclamos

Una identidad basada en reclamos es el conjunto de reclamos. Un reclamo es una declaración que una entidad (un usuario u otra aplicación) hace sobre sí misma, es solo un reclamo. Por ejemplo, una lista de reclamos puede tener el nombre del usuario, el correo electrónico del usuario, la edad del usuario, la autorización del usuario para una acción. En Seguridad basada en roles, un usuario presenta las credenciales directamente a la aplicación. En un modelo basado en reclamos, el usuario presenta los reclamos y no las credenciales a la aplicación. Para que un reclamo tenga valor práctico, debe provenir de una entidad en la que confíe la aplicación.

Los pasos a continuación ilustran la secuencia de lo que sucede en un modelo de seguridad basado en notificaciones:

  1. El usuario solicita una acción. La aplicación de la parte que confía (RP) solicita un token.
  2. El usuario presenta las credenciales a la autoridad emisora ​​en la que confía la aplicación RP.
  3. La autoridad emisora ​​emite un token firmado con notificaciones, después de autenticar las credenciales del usuario.
  4. El usuario presenta el token a la aplicación RP. La aplicación valida la firma del token, extrae los reclamos y, en función de los reclamos, acepta o rechaza la solicitud.

Pero, todavía no puedo entender y encontrar ninguna información, cuando los datos se suman a AspNetUserClaims y ¿para qué situaciones utiliza esta tabla?

Cuando se encuentra en una situación en la que no se utiliza una Seguridad basada en roles, y elige utilizar la Seguridad basada en reclamos, deberá utilizar la tabla AspNetUserClaims. Para saber cómo usar las notificaciones en la identidad ASP.NET, consulte el siguiente enlace para obtener más información.

http://kevin-junghans.blogspot.com/2013/12/using-claims-in-aspnet-identity.html

Actualizar

¿A qué hora tengo que usar la seguridad basada en roles y cuando estoy basada en notificaciones? ¿Podría por favor escribir algunos ejemplos?

No hay una situación muy clara en la que usaría o no la seguridad basada en roles o en reclamos, no como un caso en el que usaría A en lugar de B.

Pero, el control de acceso basado en reclamos permite una mejor separación de las reglas de autorización de la lógica comercial central. Cuando las reglas de autorización cambian, la lógica comercial central no se ve afectada. Habrá situaciones en las que podría preferir utilizar el enfoque basado en reclamos.

A veces las reclamaciones no son necesarias. Este es un descargo de responsabilidad importante. Las empresas con una gran cantidad de aplicaciones internas pueden usar la autenticación integrada de Windows para lograr muchos de los beneficios proporcionados por las reclamaciones. Active Directory hace un gran trabajo al almacenar las identidades de los usuarios, y debido a que Kerberos es parte de Windows, sus aplicaciones no tienen que incluir mucha lógica de autenticación. Siempre que cada aplicación que cree pueda usar la autenticación integrada de Windows, es posible que ya haya alcanzado su utopía de identidad. Sin embargo, hay muchas razones por las que podría necesitar algo más que la autenticación de Windows. Es posible que tenga aplicaciones web que son utilizadas por personas que no tienen cuentas en su dominio de Windows. Otra razón podría ser que su compañía se ha fusionado con otra compañía y usted ' tiene problemas para autenticarse en dos bosques de Windows que no tienen (y pueden no tener) una relación de confianza. Quizás desee compartir identidades con otra compañía que tenga aplicaciones que no sean de .NET Framework o necesite compartir identidades entre aplicaciones que se ejecutan en diferentes plataformas (por ejemplo, Macintosh). Estas son solo algunas situaciones en las que la identidad basada en reclamos puede ser la mejor opción para usted.

Para obtener más información, visite http://msdn.microsoft.com/en-us/library/ff359101.aspx


66
Gracias por la respuesta, pero aún no entiendo, ¿a qué hora tengo que usar la seguridad basada en roles y cuándo se basa en reclamos? ¿Podría por favor escribir algunos ejemplos?
Maxim Zhukov

1
@ FSou1, en realidad no hay un caso en el que usaría un enfoque basado en roles o en reclamos. Vea mi respuesta actualizada para más claridad.
Lin

The user presents the credentials to the issuing authority that the RP application trusts.¿Qué puede usar como esta autoridad / emisor? Algunos ejemplos serían buenos. Leí el artículo en el sitio de msdn (el enlace que proporcionó), pero enumeran solo un ejemplo: ADFS, ¿hay alguna otra opción? No puedo encontrar esta información en ningún lado. :(
Jo Smo

1
Una guía para la identidad basada en reclamos y el control de acceso proporciona una explicación completa de los enfoques basados ​​en reclamo frente al control de acceso basado en roles (RBAC). El libro completo está disponible gratis y en línea a través de descargas de MS. goodreads.com/book/show/…
Chris Mylonas

2
El libro de Microsoft RBAC gratuito mencionado por @ChrisMylonas se puede descargar de forma gratuita desde Microsoft aquí: microsoft.com/en-us/download/details.aspx?id=28362
OzBob

16

Solo para agregar más sobre lo que @Lin ha dicho anteriormente. Me refiero específicamente a la pregunta:

¿A qué hora tengo que usar la seguridad basada en roles y cuando estoy basada en notificaciones? ¿Podría por favor escribir algunos ejemplos?

Considere un caso en el que tiene un sistema de sincronización donde tiene un técnico y un gerente. Al final de cada semana, el técnico debe organizar informes con información de marcado que muestre las horas de trabajo que los artesanos trabajaron durante esa semana, que se consolida y utiliza la nómina. Tales sistemas a menudo tienen que enmendarse o corregirse antes de que se envíen los informes finales, porque no desea pagar de más o menos a sus empleados. Puede utilizar un Role-Basedenfoque para el gerente y el técnico creando un Manager Roley Technician Role. Pero Manager Rolees el que tiene la capacidad de acceder y editar la información de reloj de los artesanos. Por otro lado, puedes tener elTechnician Rolesin estas habilidades para acceder a esa información. Pero aquí está la parte interesante; Un gerente puede hacer un reclamo y permitir que un técnico acceda a los sistemas de marcado y haga informes. Por lo tanto, solo se puede hacer un reclamo por acceso sin editar o con capacidades de acceso y edición.

Es más como decir: Bueno, por defecto, como administrador, puedo acceder a cierta información a la que mi técnico no puede acceder. ¿Pero no siempre estoy en la oficina? ¿Qué puedo hacer para que él pueda hacer el trabajo incluso cuando no estoy cerca? Para resolver esto, el sistema puede tener la función de que los gerentes creen reclamos para personas sin acceso a información específica. A menudo vemos esto en todas partes en nuestros sistemas ERP. Un usuario sin acceso a algunos módulos y cuando son promovidos están dando permiso a más módulos del sistema ERP, a veces manteniendo la misma función de usuario.

Este es un ejemplo que puede considerar para comprender más los reclamos y los roles.


0

Hay dos tipos de autenticación en la identidad ASP.Net.

  1. Basado en roles
  2. Reclamo basado

Puede usar uno de ellos o ambos al mismo tiempo. Use roles basados ​​cuando tenga cosas muy definidas. Por ejemplo, crea dos roles: maestro y alumno. Solo el profesor puede agregar asignaturas. Entonces, asignó el rol de maestro a aquellos usuarios a los que desea tener acceso para agregar asignaturas.

El reclamo basado es más flexible. Supongamos que tiene un requisito, algunos estudiantes también pueden agregar asignaturas. En este caso, debe crear un rol más que puede ser estudiante y acceder para agregar una asignatura. Pero si está utilizando un reclamo basado, sería muy fácil. Simplemente cree un reclamo como addSubject y asígnelo a cualquier usuario al que desee acceder para agregar un objeto.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.