ClaimsPrincipal Clase

Definición

Implementación de IPrincipal que admite varias identidades basadas en notificaciones.

public ref class ClaimsPrincipal : System::Security::Principal::IPrincipal
public class ClaimsPrincipal : System.Security.Principal.IPrincipal
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class ClaimsPrincipal : System.Security.Principal.IPrincipal
type ClaimsPrincipal = class
    interface IPrincipal
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type ClaimsPrincipal = class
    interface IPrincipal
Public Class ClaimsPrincipal
Implements IPrincipal
Herencia
ClaimsPrincipal
Derivado
Atributos
Implementaciones

Ejemplos

En el ejemplo siguiente se extraen las notificaciones presentadas por un usuario en una solicitud HTTP y se escriben en la respuesta HTTP. El usuario actual se lee de HttpContext como .ClaimsPrincipal Después, las notificaciones se leen y, a continuación, se escriben en la respuesta.

if (HttpContext.Current.User is ClaimsPrincipal principal)
{
   foreach (Claim claim in principal.Claims)
   {
      Response.Write("CLAIM TYPE: " + claim.Type + "; CLAIM VALUE: " + claim.Value + "</br>");
   }
}

Comentarios

A partir de .NET Framework 4.5, Windows Identity Foundation (WIF) y la identidad basada en notificaciones están totalmente integrados en .NET Framework. Esto significa que muchas clases que representan una entidad de seguridad de .NET Framework ahora derivan de en lugar de ClaimsPrincipal simplemente implementar la IPrincipal interfaz. Además de implementar la IPrincipal interfaz, ClaimsPrincipal expone propiedades y métodos que son útiles para trabajar con notificaciones.

ClaimsPrincipalexpone una colección de identidades, cada una de las cuales es .ClaimsIdentity En el caso común, esta colección, a la que se accede a través de la Identities propiedad , solo tendrá un único elemento.

La introducción de ClaimsPrincipal en .NET 4.5 como entidad de seguridad de la que derivan la mayoría de las clases principales no obliga a cambiar nada de la manera en que se trata con la identidad. Sin embargo, abre más posibilidades y ofrece más posibilidades para ejercer un control de acceso más fino. Por ejemplo:

  • El propio código de aplicación puede funcionar directamente con las notificaciones contenidas en la entidad de seguridad actual para impulsar tareas adicionales de autenticación, autorización y personalización.

  • Puede hacer frente a los recursos con una canalización de procesamiento de notificaciones, que puede tratar con las solicitudes de autenticación y la directiva de autorización incluso antes de que la ejecución llegue al código. Por ejemplo, puede configurar una aplicación o servicio basado en web con un administrador de autenticación de notificaciones personalizado, una instancia de una clase que deriva de la ClaimsAuthenticationManager clase . Cuando se configura, la canalización de procesamiento de solicitudes invoca el método en el Authenticate administrador de autenticación de notificaciones que lo pasa, que ClaimsPrincipal representa el contexto de la solicitud entrante. Después, el administrador de autenticación de notificaciones puede realizar la autenticación en función de los valores de las notificaciones entrantes. También puede filtrar, transformar o agregar notificaciones al conjunto de notificaciones entrantes. Por ejemplo, se podría usar para enriquecer el conjunto de notificaciones entrantes con nuevas notificaciones creadas a partir de un origen de datos local, como un perfil de usuario local.

  • Puede configurar una aplicación basada en web con un administrador de autorización de notificaciones personalizado, una instancia de una clase que deriva de la ClaimsAuthorizationManager clase . Cuando se configura, la canalización de procesamiento de solicitudes empaqueta la entrada ClaimsPrincipal en y AuthorizationContext invoca el método en el CheckAccess administrador de autorización de notificaciones. Después, el administrador de autorización de notificaciones puede aplicar la autorización en función de las notificaciones entrantes.

  • Las comprobaciones de acceso al código insertadas basadas en notificaciones se pueden realizar mediante la configuración de la aplicación con un administrador de autorización de notificaciones personalizado y el uso de la ClaimsPrincipalPermission clase para realizar comprobaciones de acceso imperativas o ClaimsPrincipalPermissionAttribute para realizar comprobaciones de acceso declarativas. Las comprobaciones de acceso al código basadas en notificaciones se realizan en línea, fuera de la canalización de procesamiento, por lo que están disponibles para todas las aplicaciones siempre que se configure un administrador de autorización de notificaciones.

Puede obtener una ClaimsPrincipal instancia de la entidad de seguridad asociada a una solicitud o la entidad de seguridad en la que se ejecuta un subproceso, en una aplicación de usuario de confianza (RP) mediante la conversión de la Thread.CurrentPrincipal propiedad a ClaimsPrincipal. Las notificaciones asociadas a un ClaimsPrincipal objeto están disponibles a través de su Claims propiedad . La Claims propiedad devuelve todas las notificaciones contenidas por las identidades asociadas a la entidad de seguridad. En el caso poco común en el ClaimsPrincipal que contiene varias ClaimsIdentity instancias, puede usar la Identities propiedad o puede tener acceso a la identidad principal mediante la Identity propiedad . ClaimsPrincipal proporciona varios métodos a través de los cuales se pueden buscar estas notificaciones y es totalmente compatible con Language Integrated Query (LINQ). Las identidades se pueden agregar a la entidad de seguridad mediante los AddIdentities métodos o AddIdentity .

Nota

Para agregar identidades a ClaimsPrincipal, un llamador debe tener plena confianza.

De forma predeterminada, WIF da prioridad a los WindowsIdentity objetos al seleccionar la identidad principal para devolver a través de la Identity propiedad . Puede modificar este comportamiento proporcionando un delegado a través de la PrimaryIdentitySelector propiedad para realizar la selección. La ClaimsPrincipalSelector propiedad proporciona una funcionalidad similar para la Current propiedad .

En el modelo basado en notificaciones, si una entidad de seguridad está en un rol especificado viene determinada por las notificaciones presentadas por sus identidades subyacentes. Básicamente, el IsInRole método examina cada identidad asociada a la entidad de seguridad para determinar si posee una notificación con el valor de rol especificado. El tipo de la notificación (representada por su Claim.Type propiedad) utilizada para determinar qué notificaciones se deben examinar durante las comprobaciones de roles se especifica en una identidad a través de su ClaimsIdentity.RoleClaimType propiedad . Por lo tanto, las notificaciones que se examinan durante las comprobaciones de roles pueden ser de un tipo diferente para distintas identidades asociadas a la entidad de seguridad.

Constructores

ClaimsPrincipal()

Inicializa una nueva instancia de la clase ClaimsPrincipal.

ClaimsPrincipal(BinaryReader)

Inicializa una instancia de ClaimsPrincipal con BinaryReader especificado.

ClaimsPrincipal(IEnumerable<ClaimsIdentity>)

Inicializa una nueva instancia de la clase ClaimsPrincipal mediante identidades de notificaciones especificadas.

ClaimsPrincipal(IIdentity)

Inicializa una nueva instancia de la clase ClaimsPrincipal a partir de identidad especificada.

ClaimsPrincipal(IPrincipal)

Inicializa una nueva instancia de la clase ClaimsPrincipal a partir de la entidad de seguridad especificada.

ClaimsPrincipal(SerializationInfo, StreamingContext)
Obsoletos.

Inicializa una nueva instancia de la clase ClaimsPrincipal a partir de una secuencia serializada creada mediante ISerializable.

Propiedades

Claims

Obtiene una colección que contiene todas las notificaciones de todas las identidades de notificaciones asociadas a esta entidad de seguridad de notificaciones.

ClaimsPrincipalSelector

Obtiene o establece el delegado que se usa para seleccionar la entidad de seguridad para notificaciones que devuelve la propiedad Current.

Current

Obtiene la entidad de seguridad de notificaciones actual.

CustomSerializationData

Contiene datos adicionales proporcionados por un tipo derivado. Se establece normalmente cuando se llama a WriteTo(BinaryWriter, Byte[]).

Identities

Obtiene una colección que contiene todas las identidades de notificaciones asociadas a esta entidad de seguridad de notificaciones.

Identity

Obtiene la identidad basada en notificaciones principal asociada con esta entidad de seguridad de notificaciones.

PrimaryIdentitySelector

Obtiene o establece el delegado que se usa para seleccionar la identidad de las notificaciones devuelta por la propiedad Identity.

Métodos

AddIdentities(IEnumerable<ClaimsIdentity>)

Agrega las identidades de notificaciones especificadas a esta entidad de seguridad de notificaciones.

AddIdentity(ClaimsIdentity)

Agrega la identidad de notificaciones especificadas a esta entidad de seguridad de notificaciones.

Clone()

Devuelve una copia de esta instancia.

CreateClaimsIdentity(BinaryReader)

Crea una nueva identidad basada en notificaciones.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
FindAll(Predicate<Claim>)

Recupera todas las notificaciones que coinciden con el predicado especificado.

FindAll(String)

Recupera todas o las notificaciones que tienen el tipo de notificación especificado.

FindFirst(Predicate<Claim>)

Recupera la primera reclamación con la que coincide el predicado especificado.

FindFirst(String)

Recupera la primera reclamación con el tipo especificado.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetObjectData(SerializationInfo, StreamingContext)

Rellena el objeto SerializationInfo con los datos necesarios para serializar el objeto ClaimsPrincipal actual.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
HasClaim(Predicate<Claim>)

Determina si cualquiera de las identidades de notificaciones asociadas a esta entidad de seguridad de notificaciones contiene una notificación que coincide con el predicado especificado.

HasClaim(String, String)

Determina si cualquiera de las identidades de notificaciones asociadas a esta entidad de seguridad de notificaciones contiene una notificación con el valor y el tipo de notificación especificada.

IsInRole(String)

Devuelve un valor que indica si la entidad (usuario) representada por esta entidad de seguridad de notificaciones está en el rol especificado.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
WriteTo(BinaryWriter, Byte[])

Se serializa usando un BinaryWriter.

WriteTo(BinaryWriter)

Se serializa usando un BinaryWriter.

Se aplica a

Consulte también