schemes net asp c# .net authentication wif claims-based-identity

net - c# authorize



¿Cuál es el rol de ClaimsPrincipal? ¿Por qué tiene múltiples identidades? (2)

Estoy tratando de entender el modelo de seguridad detrás de .NET basado en los reclamos de la aplicación (Relying Party).

Sé que hay 2 clases principales:

  • ClaimsPrincipal - contexto de seguridad para el proceso en ejecución
  • IdentityPrincipal: almacena información sobre el usuario: estado de autenticación y reclamaciones

La cuestión es que, ClaimsPrincipal contiene solo una colección de identidades y puntos a la que se usa actualmente, pero, por lo que sé, el principal generalmente nunca contiene más de 1 identidad e incluso si lo hiciera, el usuario nunca ha iniciado sesión con 2 o más identidades

Para mí, el ClaimsPrincipal, aparte de usarlo para obtener la identidad actual, disculpa mi ignorancia, es inútil.

¿Qué es lo que me falta, aparte de lo que dije y digamos compatibilidad hacia atrás con respecto a la clase ClaimsPrincipal?


La cuestión es que, ClaimsPrincipal contiene solo una colección de identidades y puntos a la que se usa actualmente, pero, por lo que sé, el principal generalmente nunca contiene más de 1 identidad e incluso si lo hiciera, el usuario nunca ha iniciado sesión con 2 o más identidades

Esta es una suposición errónea. De hecho, el ClaimsPrincipal en contexto siempre tendrá más de 1 identidad si su aplicación requiere autenticación con n factores (n> 1).

Intenta mirarlo de esta manera.

Principal = Usuario

Identidad = Licencia de conducir, Pasaporte, Tarjeta de crédito, Cuenta de Google, Cuenta de Facebook, RSA SecurID, Huella digital, Reconocimiento facial, etc.

Si la policía lo detiene, no verifican que usted es quien dice ser, basándose únicamente en su licencia de conducir. Ellos también necesitan ver tu cara. De lo contrario podría mostrar la licencia de conducir de los anyones.

Por lo tanto, tiene sentido, por qué la autenticación puede y, a veces, debe basarse en múltiples identidades. Es por eso que 1 ClaimsPrincipal puede tener cualquier número de ClaimsIdentity.


Un principio de seguridad importante es "quién dice", es decir, confiamos en la parte que está afirmando las reclamaciones en contra de la identidad, por lo que para un determinado ClaimsPrincipal podríamos tener diferentes identidades, cada una de las cuales está afirmando un conjunto diferente de reclamaciones, lo que nos permite determinar El control de acceso de anulación en la aplicación,

Tomemos el ejemplo de una aplicación empresarial que se autentica a través de la Autenticación de Windows, donde también queremos establecer cierto control de acceso basado en equipos o departamentos que se encuentran en la base de datos de la aplicación.

Mediante el uso de ClaimsTransformationManager podemos unificar estos dos conjuntos, es decir, después de autenticar al usuario, podemos buscar el equipo / departamento del usuario en la base de datos y crear un conjunto de reclamaciones emitidas por la aplicación.

Así que ahora tenemos los roles (que son reclamos bajo el capó) que Windows afirma y una identidad de aplicación que afirma los reclamos personalizados de equipos o departamento.