ClaimsPrincipal Clase

Definición

Implementación de IPrincipal que admite varias identidades basadas en notificaciones.An IPrincipal implementation that supports multiple claims-based identities.

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.The following example extracts the claims presented by a user in an HTTP request and writes them to the HTTP response. El usuario actual se lee desde el HttpContext como ClaimsPrincipal .The current user is read from the HttpContext as a ClaimsPrincipal. Después, las notificaciones se leen de ella y, a continuación, se escriben en la respuesta.The claims are then read from it and then are written to the response.

ClaimsPrincipal principal = HttpContext.Current.User as ClaimsPrincipal;  
if (null != 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 se han integrado completamente en el .NET Framework.Beginning with .NET Framework 4.5, Windows Identity Foundation (WIF) and claims-based identity have been fully integrated into the .NET Framework. Esto significa que muchas clases que representan una entidad de seguridad en el .NET Framework ahora derivan de ClaimsPrincipal en lugar de simplemente implementar la IPrincipal interfaz.This means that many classes that represent a principal in the .NET Framework now derive from ClaimsPrincipal rather than simply implementing the IPrincipal interface. Además de implementar la IPrincipal interfaz, ClaimsPrincipal expone propiedades y métodos que son útiles para trabajar con notificaciones.In addition to implementing the IPrincipal interface, ClaimsPrincipal exposes properties and methods that are useful for working with claims.

ClaimsPrincipal expone una colección de identidades, cada una de las cuales es una ClaimsIdentity .ClaimsPrincipal exposes a collection of identities, each of which is a ClaimsIdentity. En el caso común, esta colección, a la que se tiene acceso a través de la Identities propiedad, solo tendrá un elemento único.In the common case, this collection, which is accessed through the Identities property, will only have a single element.

La introducción de ClaimsPrincipal en .net 4,5 como la entidad de seguridad de la que derivan la mayoría de las clases principales no obliga a cambiar nada en la forma en que se trata de la identidad.The introduction of ClaimsPrincipal in .NET 4.5 as the principal from which most principal classes derive does not force you to change anything in the way in which you deal with identity. Sin embargo, puede abrir más posibilidades y ofrecer más posibilidades de ejercer un mayor control de acceso.It does, however open up more possibilities and offer more chances to exercise finer access control. Por ejemplo:For example:

  • El propio código de aplicación puede trabajar directamente con las notificaciones contenidas en la entidad de seguridad actual para impulsar tareas adicionales de personalización, autorización y autenticación.The application code itself can work directly with the claims contained in the current principal to drive extra authentication, authorization, and personalization tasks.

  • Puede hacer frente a los recursos con una canalización de procesamiento de notificaciones, que puede tratar las solicitudes de autenticación y la Directiva de autorización incluso antes de que la ejecución llegue al código.You can front your resources with a claims processing pipeline, which can deal with authentication requests and authorization policy even before execution reaches your code. Por ejemplo, puede configurar una aplicación o un servicio basados en Web con un administrador de autenticación de notificaciones personalizado, una instancia de una clase que deriva de la ClaimsAuthenticationManager clase.For example, you can configure a web-based application or service with a custom claims authentication manager, an instance of a class that derives from the ClaimsAuthenticationManager class. Cuando se configura, la canalización de procesamiento de solicitudes invoca el Authenticate método en el administrador de autenticación de notificaciones y le pasa un objeto ClaimsPrincipal que representa el contexto de la solicitud entrante.When so configured, the request processing pipeline invokes the Authenticate method on your claims authentication manager passing it a ClaimsPrincipal that represents the context of the incoming request. Después, el administrador de autenticación de notificaciones puede realizar la autenticación en función de los valores de las notificaciones entrantes.Your claims authentication manager can then perform authentication based on the values of the incoming claims. También puede filtrar, transformar o agregar notificaciones al conjunto de notificaciones entrantes.It can also filter, transform, or add claims to the incoming claim set. Por ejemplo, podría usarse 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.For example, it could be used to enrich the incoming claim set with new claims created from a local data source such as a local user profile

  • Puede configurar una aplicación basada en Web con un administrador de autorización de notificaciones personalizado, una instancia de una clase que se deriva de la ClaimsAuthorizationManager clase.You can configure a web-based application with a custom claims authorization manager, an instance of a class that derives from the ClaimsAuthorizationManager class. Cuando se configura, la canalización de procesamiento de solicitudes empaqueta el entrante ClaimsPrincipal en AuthorizationContext e invoca el CheckAccess método en el administrador de autorización de notificaciones.When so configured, the request processing pipeline packages the incoming ClaimsPrincipal in an AuthorizationContext and invokes the CheckAccess method on your claims authorization manager. Después, el administrador de autorización de notificaciones puede aplicar la autorización en función de las notificaciones entrantes.Your claims authorization manager can then enforce authorization based on the incoming claims.

  • Las comprobaciones de acceso de código basadas en notificaciones en línea 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 imperativa o ClaimsPrincipalPermissionAttribute para realizar comprobaciones de acceso declarativas.Inline claims-based code access checks can be performed by configuring your application with a custom claims authorization manager and using either the ClaimsPrincipalPermission class to perform imperative access checks or the ClaimsPrincipalPermissionAttribute to perform declarative access checks. Las comprobaciones de acceso de 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.Claims-based code access checks are performed inline, outside of the processing pipeline, and so are available to all applications as long as a claims authorization manager is configured.

Puede obtener una ClaimsPrincipal instancia de la entidad de seguridad asociada a una solicitud en una aplicación de RP (o la entidad de seguridad bajo la que se está ejecutando un subproceso) convirtiendo la Thread.CurrentPrincipal propiedad en ClaimsPrincipal .You can obtain a ClaimsPrincipal instance for the principal associated with a request in an RP application (or the principal under which a thread is executing) by casting the Thread.CurrentPrincipal property to ClaimsPrincipal. Las notificaciones asociadas con un ClaimsPrincipal objeto están disponibles a través de su Claims propiedad.The claims associated with an ClaimsPrincipal object are available through its Claims property. La Claims propiedad devuelve todas las notificaciones contenidas por las identidades asociadas a la entidad de seguridad.The Claims property returns all of the claims contained by the identities associated with the principal. En el caso poco frecuente en el que el ClaimsPrincipal contiene varias ClaimsIdentity instancias, puede usar la Identities propiedad o puede tener acceso a la identidad principal mediante la Identity propiedad.In the uncommon case in which the ClaimsPrincipal contains multiple ClaimsIdentity instances, you can use the Identities property or you can access the primary identity by using the Identity property. 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).ClaimsPrincipal provides several methods through which these claims may be searched and fully supports Language Integrated Query (LINQ). Las identidades se pueden agregar a la entidad de seguridad mediante los AddIdentities AddIdentity métodos o.Identities can be added to the principal by using the AddIdentities or AddIdentity methods.

Nota

Para agregar identidades a ClaimsPrincipal , un llamador debe tener plena confianza.To add identities to the ClaimsPrincipal, a caller must have full trust.

De forma predeterminada, WIF prioriza los WindowsIdentity objetos al seleccionar la identidad principal que se va a devolver a través de la Identity propiedad.By default, WIF prioritizes WindowsIdentity objects when selecting the primary identity to return through the Identity property. Puede modificar este comportamiento proporcionando un delegado a través de la PrimaryIdentitySelector propiedad para realizar la selección.You can modify this behavior by supplying a delegate through the PrimaryIdentitySelector property to perform the selection. La ClaimsPrincipalSelector propiedad proporciona una funcionalidad similar para la Current propiedad.The ClaimsPrincipalSelector property provides similar functionality for the Current property.

En el modelo basado en notificaciones, tanto si una entidad de seguridad está en un rol especificado viene determinada por las notificaciones presentadas por sus identidades subyacentes.In the claim-based model, whether a principal is in a specified role is determined by the claims presented by its underlying identities. IsInRoleBásicamente, el método examina cada identidad asociada a la entidad de seguridad para determinar si posee una demanda con el valor de rol especificado.The IsInRole method essentially examines each identity associated with the principal to determine whether it possesses a claim with the specified role value. El tipo de la notificación (representada por su Claim.Type propiedad) que se usa para determinar qué notificaciones se deben examinar durante las comprobaciones de rol se especifica en una identidad a través de su ClaimsIdentity.RoleClaimType propiedad.The type of the claim (represented by its Claim.Type property) used to determine which claims should be examined during role checks is specified on an identity through its ClaimsIdentity.RoleClaimType property. Por lo tanto, las notificaciones examinadas durante las comprobaciones de rol pueden ser de un tipo diferente para las distintas identidades asociadas a la entidad de seguridad.Thus, the claims examined during role checks can be of a different type for different identities associated with the principal.

Constructores

ClaimsPrincipal()

Inicializa una nueva instancia de la clase ClaimsPrincipal.Initializes a new instance of the ClaimsPrincipal class.

ClaimsPrincipal(BinaryReader)

Inicializa una instancia de ClaimsPrincipal con BinaryReader especificado.Initializes an instance of ClaimsPrincipal with the specified BinaryReader.

ClaimsPrincipal(IEnumerable<ClaimsIdentity>)

Inicializa una nueva instancia de la clase ClaimsPrincipal mediante identidades de notificaciones especificadas.Initializes a new instance of the ClaimsPrincipal class using the specified claims identities.

ClaimsPrincipal(IIdentity)

Inicializa una nueva instancia de la clase ClaimsPrincipal a partir de identidad especificada.Initializes a new instance of the ClaimsPrincipal class from the specified identity.

ClaimsPrincipal(IPrincipal)

Inicializa una nueva instancia de la clase ClaimsPrincipal a partir de la entidad de seguridad especificada.Initializes a new instance of the ClaimsPrincipal class from the specified principal.

ClaimsPrincipal(SerializationInfo, StreamingContext)

Inicializa una nueva instancia de la clase ClaimsPrincipal a partir de una secuencia serializada creada mediante ISerializable.Initializes a new instance of the ClaimsPrincipal class from a serialized stream created by using 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.Gets a collection that contains all of the claims from all of the claims identities associated with this claims principal.

ClaimsPrincipalSelector

Obtiene o establece el delegado que se usa para seleccionar la entidad de seguridad para notificaciones que devuelve la propiedad Current.Gets or sets the delegate used to select the claims principal returned by the Current property.

Current

Obtiene la entidad de seguridad de notificaciones actual.Gets the current claims principal.

CustomSerializationData

Contiene datos adicionales proporcionados por un tipo derivado.Contains any additional data provided by a derived type. Se establece normalmente cuando se llama a WriteTo(BinaryWriter, Byte[]).Typically set when calling WriteTo(BinaryWriter, Byte[]).

Identities

Obtiene una colección que contiene todas las identidades de notificaciones asociadas a esta entidad de seguridad de notificaciones.Gets a collection that contains all of the claims identities associated with this claims principal.

Identity

Obtiene la identidad basada en notificaciones principal asociada con esta entidad de seguridad de notificaciones.Gets the primary claims identity associated with this claims principal.

PrimaryIdentitySelector

Obtiene o establece el delegado que se usa para seleccionar la identidad de las notificaciones devuelta por la propiedad Identity.Gets or sets the delegate used to select the claims identity returned by the Identity property.

Métodos

AddIdentities(IEnumerable<ClaimsIdentity>)

Agrega las identidades de notificaciones especificadas a esta entidad de seguridad de notificaciones.Adds the specified claims identities to this claims principal.

AddIdentity(ClaimsIdentity)

Agrega la identidad de notificaciones especificadas a esta entidad de seguridad de notificaciones.Adds the specified claims identity to this claims principal.

Clone()

Devuelve una copia de esta instancia.Returns a copy of this instance.

CreateClaimsIdentity(BinaryReader)

Crea una nueva identidad basada en notificaciones.Creates a new claims identity.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.Determines whether the specified object is equal to the current object.

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

Recupera todas las notificaciones que coinciden con el predicado especificado.Retrieves all of the claims that are matched by the specified predicate.

FindAll(String)

Recupera todas o las notificaciones que tienen el tipo de notificación especificado.Retrieves all or the claims that have the specified claim type.

FindFirst(Predicate<Claim>)

Recupera la primera reclamación con la que coincide el predicado especificado.Retrieves the first claim that is matched by the specified predicate.

FindFirst(String)

Recupera la primera reclamación con el tipo especificado.Retrieves the first claim with the specified claim type.

GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Heredado de Object)
GetObjectData(SerializationInfo, StreamingContext)

Rellena el objeto SerializationInfo con los datos necesarios para serializar el objeto ClaimsPrincipal actual.Populates the SerializationInfo with data needed to serialize the current ClaimsPrincipal object.

GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(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.Determines whether any of the claims identities associated with this claims principal contains a claim that is matched by the specified predicate.

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.Determines whether any of the claims identities associated with this claims principal contains a claim with the specified claim type and value.

IsInRole(String)

Devuelve un valor que indica si la entidad (usuario) representada por esta entidad de seguridad de notificaciones está en el rol especificado.Returns a value that indicates whether the entity (user) represented by this claims principal is in the specified role.

MemberwiseClone()

Crea una copia superficial del Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Heredado de Object)
WriteTo(BinaryWriter)

Se serializa usando un BinaryWriter.Serializes using a BinaryWriter.

WriteTo(BinaryWriter, Byte[])

Se serializa usando un BinaryWriter.Serializes using a BinaryWriter.

Se aplica a

Consulte también