ClaimsPrincipal Classe

Definição

Uma implementação do IPrincipal que dá suporte a várias identidades baseadas em declarações.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
Herança
ClaimsPrincipal
Derivado
Atributos
Implementações

Exemplos

O exemplo a seguir extrai as declarações apresentadas por um usuário em uma solicitação HTTP e as grava na resposta HTTP.The following example extracts the claims presented by a user in an HTTP request and writes them to the HTTP response. O usuário atual é lido no HttpContext como um ClaimsPrincipal .The current user is read from the HttpContext as a ClaimsPrincipal. As declarações são então lidas a partir dela e, em seguida, são gravadas na resposta.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>");  
   }  
}  

Comentários

A partir do .NET Framework 4,5, o WIF (Windows Identity Foundation) e a identidade baseada em declarações foram totalmente integrados à .NET Framework.Beginning with .NET Framework 4.5, Windows Identity Foundation (WIF) and claims-based identity have been fully integrated into the .NET Framework. Isso significa que muitas classes que representam uma entidade no .NET Framework agora derivam de ClaimsPrincipal , em vez de simplesmente implementar a IPrincipal interface.This means that many classes that represent a principal in the .NET Framework now derive from ClaimsPrincipal rather than simply implementing the IPrincipal interface. Além de implementar a IPrincipal interface, ClaimsPrincipal expõe as propriedades e os métodos que são úteis para trabalhar com declarações.In addition to implementing the IPrincipal interface, ClaimsPrincipal exposes properties and methods that are useful for working with claims.

ClaimsPrincipal expõe uma coleção de identidades, cada uma delas é um ClaimsIdentity .ClaimsPrincipal exposes a collection of identities, each of which is a ClaimsIdentity. No caso comum, essa coleção, que é acessada por meio da Identities propriedade, terá apenas um único elemento.In the common case, this collection, which is accessed through the Identities property, will only have a single element.

A introdução do ClaimsPrincipal no .net 4,5 como a principal da qual a maioria das classes principais deriva não força você a alterar qualquer coisa na forma como você lida com a identidade.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. No entanto, ele abre mais possibilidades e oferece mais chances de exercer um controle de acesso mais preciso.It does, however open up more possibilities and offer more chances to exercise finer access control. Por exemplo:For example:

  • O próprio código do aplicativo pode trabalhar diretamente com as declarações contidas na entidade atual para direcionar tarefas de autenticação, autorização e personalização extras.The application code itself can work directly with the claims contained in the current principal to drive extra authentication, authorization, and personalization tasks.

  • Você pode antecipar seus recursos com um pipeline de processamento de declarações, que pode lidar com solicitações de autenticação e política de autorização, mesmo antes da execução atingir seu 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 exemplo, você pode configurar um aplicativo ou serviço baseado na Web com um Gerenciador de autenticação de declarações personalizado, uma instância de uma classe que deriva da ClaimsAuthenticationManager classe.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. Quando configurado, o pipeline de processamento de solicitações invoca o Authenticate método em seu Gerenciador de autenticação de declarações, passando-o ClaimsPrincipal que representa o contexto da solicitação de entrada.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. O Gerenciador de autenticação de declarações pode, então, executar a autenticação com base nos valores das declarações de entrada.Your claims authentication manager can then perform authentication based on the values of the incoming claims. Ele também pode filtrar, transformar ou adicionar declarações ao conjunto de declarações de entrada.It can also filter, transform, or add claims to the incoming claim set. Por exemplo, ele pode ser usado para enriquecer o conjunto de declarações de entrada com novas declarações criadas a partir de uma fonte de dados local, como um perfil de usuário localFor 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

  • Você pode configurar um aplicativo baseado na Web com um Gerenciador de autorização de declarações personalizado, uma instância de uma classe que deriva da ClaimsAuthorizationManager classe.You can configure a web-based application with a custom claims authorization manager, an instance of a class that derives from the ClaimsAuthorizationManager class. Quando configurado, o pipeline de processamento de solicitação empacota a entrada ClaimsPrincipal em um AuthorizationContext e invoca o CheckAccess método em seu Gerenciador de autorização de declarações.When so configured, the request processing pipeline packages the incoming ClaimsPrincipal in an AuthorizationContext and invokes the CheckAccess method on your claims authorization manager. O Gerenciador de autorização de declarações pode, então, impor a autorização com base nas declarações de entrada.Your claims authorization manager can then enforce authorization based on the incoming claims.

  • Verificações de acesso a código baseadas em declarações embutidas podem ser realizadas configurando seu aplicativo com um Gerenciador de autorização de declarações personalizado e usando a ClaimsPrincipalPermission classe para executar verificações de acesso imperativas ou o ClaimsPrincipalPermissionAttribute para executar verificações de acesso declarativo.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. As verificações de acesso a código baseadas em declarações são executadas em linha, fora do pipeline de processamento e, portanto, estão disponíveis para todos os aplicativos, desde que um Gerenciador de autorização de declarações esteja configurado.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.

Você pode obter uma ClaimsPrincipal instância para a entidade de segurança associada a uma solicitação em um aplicativo RP (ou a entidade de segurança sob a qual um thread está sendo executado), convertendo a Thread.CurrentPrincipal propriedade para 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. As declarações associadas a um ClaimsPrincipal objeto estão disponíveis por meio de sua Claims propriedade.The claims associated with an ClaimsPrincipal object are available through its Claims property. A Claims propriedade retorna todas as declarações contidas pelas identidades associadas à entidade de segurança.The Claims property returns all of the claims contained by the identities associated with the principal. No caso incomum em que o ClaimsPrincipal contém várias ClaimsIdentity instâncias, você pode usar a Identities propriedade ou pode acessar a identidade primária usando a Identity propriedade.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 fornece vários métodos por meio dos quais essas declarações podem ser pesquisadas e dá suporte total à LINQ (consulta integrada à linguagem).ClaimsPrincipal provides several methods through which these claims may be searched and fully supports Language Integrated Query (LINQ). As identidades podem ser adicionadas à entidade de segurança usando os AddIdentities AddIdentity métodos ou.Identities can be added to the principal by using the AddIdentities or AddIdentity methods.

Observação

Para adicionar identidades ao ClaimsPrincipal , um chamador deve ter confiança total.To add identities to the ClaimsPrincipal, a caller must have full trust.

Por padrão, o WIF prioriza os WindowsIdentity objetos ao selecionar a identidade primária para retornar por meio da Identity propriedade.By default, WIF prioritizes WindowsIdentity objects when selecting the primary identity to return through the Identity property. Você pode modificar esse comportamento fornecendo um delegado por meio da PrimaryIdentitySelector propriedade para executar a seleção.You can modify this behavior by supplying a delegate through the PrimaryIdentitySelector property to perform the selection. A ClaimsPrincipalSelector propriedade fornece funcionalidade semelhante para a Current propriedade.The ClaimsPrincipalSelector property provides similar functionality for the Current property.

No modelo baseado em declarações, se uma entidade de segurança está em uma função especificada é determinada pelas declarações apresentadas por suas identidades subjacentes.In the claim-based model, whether a principal is in a specified role is determined by the claims presented by its underlying identities. IsInRoleEssencialmente, o método examina cada identidade associada à entidade para determinar se ela possui uma declaração com o valor de função especificado.The IsInRole method essentially examines each identity associated with the principal to determine whether it possesses a claim with the specified role value. O tipo da declaração (representada por sua Claim.Type Propriedade) usada para determinar quais declarações devem ser examinadas durante as verificações de função é especificada em uma identidade por meio de sua ClaimsIdentity.RoleClaimType propriedade.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. Assim, as declarações examinadas durante as verificações de função podem ser de um tipo diferente para identidades diferentes associadas à entidade de segurança.Thus, the claims examined during role checks can be of a different type for different identities associated with the principal.

Construtores

ClaimsPrincipal()

Inicializa uma nova instância da classe ClaimsPrincipal.Initializes a new instance of the ClaimsPrincipal class.

ClaimsPrincipal(BinaryReader)

Inicializa uma instância de ClaimsPrincipal com o BinaryReader especificado.Initializes an instance of ClaimsPrincipal with the specified BinaryReader.

ClaimsPrincipal(IEnumerable<ClaimsIdentity>)

Inicializa uma nova instância da classe ClaimsPrincipal usando as identidades baseadas em declarações especificadas.Initializes a new instance of the ClaimsPrincipal class using the specified claims identities.

ClaimsPrincipal(IIdentity)

Inicializa uma nova instância da classe ClaimsPrincipal da identidade especificada.Initializes a new instance of the ClaimsPrincipal class from the specified identity.

ClaimsPrincipal(IPrincipal)

Inicializa uma nova instância da classe ClaimsPrincipal com base na entidade de segurança especificada.Initializes a new instance of the ClaimsPrincipal class from the specified principal.

ClaimsPrincipal(SerializationInfo, StreamingContext)

Inicializa uma nova instância da classe ClaimsPrincipal de um fluxo serializado criado usando ISerializable.Initializes a new instance of the ClaimsPrincipal class from a serialized stream created by using ISerializable.

Propriedades

Claims

Obtém uma coleção que contém todas as declarações de todas as identidades de declarações associadas a essa entidade de segurança de declarações.Gets a collection that contains all of the claims from all of the claims identities associated with this claims principal.

ClaimsPrincipalSelector

Obtém ou define o delegado usado para selecionar a entidade de segurança de declarações retornada pela propriedade Current.Gets or sets the delegate used to select the claims principal returned by the Current property.

Current

Obtém a entidade de segurança de declarações atual.Gets the current claims principal.

CustomSerializationData

Contém quaisquer dados adicionais fornecidos por um tipo derivado.Contains any additional data provided by a derived type. Normalmente definido ao chamar WriteTo(BinaryWriter, Byte[]).Typically set when calling WriteTo(BinaryWriter, Byte[]).

Identities

Obtém uma coleção que contém todas as identidades baseadas em declarações associadas a essa entidade de segurança de declarações.Gets a collection that contains all of the claims identities associated with this claims principal.

Identity

Obtém a identidade de declarações principal associada a essa entidade de segurança de declarações.Gets the primary claims identity associated with this claims principal.

PrimaryIdentitySelector

Obtém ou define o delegado usado para selecionar a identidade baseada em declarações retornada pela propriedade Identity.Gets or sets the delegate used to select the claims identity returned by the Identity property.

Métodos

AddIdentities(IEnumerable<ClaimsIdentity>)

Adiciona as identidades baseadas em declarações especificadas a esta entidade de segurança de declarações.Adds the specified claims identities to this claims principal.

AddIdentity(ClaimsIdentity)

Adiciona a identidade baseada em declarações especificada a esta entidade de segurança de declarações.Adds the specified claims identity to this claims principal.

Clone()

Retorna uma cópia desta instância.Returns a copy of this instance.

CreateClaimsIdentity(BinaryReader)

Cria uma nova identidade baseada em declarações.Creates a new claims identity.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

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

Recupera todas as declarações que correspondem ao predicado especificado.Retrieves all of the claims that are matched by the specified predicate.

FindAll(String)

Recupera todas as declarações que têm o tipo de declaração especificado.Retrieves all or the claims that have the specified claim type.

FindFirst(Predicate<Claim>)

Recupera a primeira declaração correspondente ao predicado especificado.Retrieves the first claim that is matched by the specified predicate.

FindFirst(String)

Recupera a primeira declaração com o tipo de declaração especificado.Retrieves the first claim with the specified claim type.

GetHashCode()

Serve como a função de hash padrão.Serves as the default hash function.

(Herdado de Object)
GetObjectData(SerializationInfo, StreamingContext)

Preenche o SerializationInfo com os dados necessários para serializar o objeto de ClaimsPrincipal atual.Populates the SerializationInfo with data needed to serialize the current ClaimsPrincipal object.

GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

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

Determina se uma das identidades baseadas em declarações associadas a essa entidade de segurança de declarações contém uma declaração correspondente ao 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 se uma das identidades de declarações associadas a essa entidade de segurança de declarações contém uma declaração com o valor e o tipo de declaração especificados.Determines whether any of the claims identities associated with this claims principal contains a claim with the specified claim type and value.

IsInRole(String)

Retorna um valor que indica se a entidade (usuário) representada por essa entidade de segurança de declarações está na função especificada.Returns a value that indicates whether the entity (user) represented by this claims principal is in the specified role.

MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Herdado de Object)
WriteTo(BinaryWriter)

Serializa usando um BinaryWriter.Serializes using a BinaryWriter.

WriteTo(BinaryWriter, Byte[])

Serializa usando um BinaryWriter.Serializes using a BinaryWriter.

Aplica-se a

Confira também