ClaimsPrincipal Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Uma implementação do IPrincipal que dá suporte a várias identidades baseadas em declarações.
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. O usuário atual é lido do HttpContext como um ClaimsPrincipal. Em seguida, as declarações são lidas nela e, em seguida, são gravadas na resposta.
if (HttpContext.Current.User is ClaimsPrincipal 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 são totalmente integrados ao .NET Framework. Isso significa que muitas classes que representam uma entidade de segurança no .NET Framework agora derivam de em vez de ClaimsPrincipal simplesmente implementar a IPrincipal interface. Além de implementar a IPrincipal interface , ClaimsPrincipal expõe propriedades e métodos que são úteis para trabalhar com declarações.
ClaimsPrincipal expõe uma coleção de identidades, cada uma das quais é um ClaimsIdentity. No caso comum, essa coleção, que é acessada por meio da Identities propriedade , terá apenas um único elemento.
A introdução do ClaimsPrincipal no .NET 4.5 como a entidade de segurança da qual a maioria das classes principais deriva não força você a alterar nada na maneira como você lida com a identidade. No entanto, ele abre mais possibilidades e oferece mais chances de exercer um controle de acesso mais fino. Por exemplo:
O próprio código do aplicativo pode trabalhar diretamente com as declarações contidas na entidade de segurança atual para impulsionar tarefas extras de autenticação, autorização e personalização.
Você pode executar 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. 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 derivada da ClaimsAuthenticationManager classe . Quando assim configurado, o pipeline de processamento de solicitação invoca o Authenticate método em seu gerenciador de autenticação de declarações passando-lhe um ClaimsPrincipal que representa o contexto da solicitação de entrada. O gerenciador de autenticação de declarações pode executar a autenticação com base nos valores das declarações de entrada. Ele também pode filtrar, transformar ou adicionar declarações ao conjunto de declarações de entrada. 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 local
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 . Quando assim configurado, o pipeline de processamento de solicitação empacota a entrada ClaimsPrincipal em um AuthorizationContext e invoca o CheckAccess método no gerenciador de autorização de declarações. O gerenciador de autorização de declarações pode impor a autorização com base nas declarações de entrada.
As verificações de acesso de código baseadas em declarações embutidas podem ser executadas configurando seu aplicativo com um gerenciador de autorização de declarações personalizadas e usando a ClaimsPrincipalPermission classe para executar verificações de acesso imperativas ou para ClaimsPrincipalPermissionAttribute executar verificações de acesso declarativo. As verificações de acesso a código baseadas em declarações são executadas embutidas, 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.
Você pode obter uma ClaimsPrincipal instância para a entidade de segurança associada a uma solicitação ou a entidade de segurança sob a qual um thread está sendo executado, em um aplicativo RP (terceira parte confiável) convertendo a Thread.CurrentPrincipal propriedade em ClaimsPrincipal. As declarações associadas a um ClaimsPrincipal objeto estão disponíveis por meio de sua Claims propriedade. A Claims propriedade retorna todas as declarações contidas pelas identidades associadas à entidade de segurança. 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 . ClaimsPrincipal fornece vários métodos pelos quais essas declarações podem ser pesquisadas e dá suporte total à LINQ (Consulta Integrada à Linguagem). As identidades podem ser adicionadas à entidade de segurança usando os AddIdentities métodos ou AddIdentity .
Observação
Para adicionar identidades ao ClaimsPrincipal, um chamador deve ter confiança total.
Por padrão, o WIF prioriza WindowsIdentity objetos ao selecionar a identidade primária para retornar por meio da Identity propriedade . Você pode modificar esse comportamento fornecendo um delegado por meio da PrimaryIdentitySelector propriedade para executar a seleção. A ClaimsPrincipalSelector propriedade fornece funcionalidade semelhante para a Current propriedade .
No modelo baseado em declaração, se uma entidade de segurança está em uma função especificada é determinada pelas declarações apresentadas por suas identidades subjacentes. O IsInRole método examina essencialmente cada identidade associada à entidade de segurança para determinar se ela possui uma declaração com o valor de função especificado. 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 é especificado em uma identidade por meio de sua ClaimsIdentity.RoleClaimType propriedade. 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.
Construtores
ClaimsPrincipal() |
Inicializa uma nova instância da classe ClaimsPrincipal. |
ClaimsPrincipal(BinaryReader) |
Inicializa uma instância de ClaimsPrincipal com o BinaryReader especificado. |
ClaimsPrincipal(IEnumerable<ClaimsIdentity>) |
Inicializa uma nova instância da classe ClaimsPrincipal usando as identidades baseadas em declarações especificadas. |
ClaimsPrincipal(IIdentity) |
Inicializa uma nova instância da classe ClaimsPrincipal da identidade especificada. |
ClaimsPrincipal(IPrincipal) |
Inicializa uma nova instância da classe ClaimsPrincipal com base na entidade de segurança especificada. |
ClaimsPrincipal(SerializationInfo, StreamingContext) |
Obsoleto.
Inicializa uma nova instância da classe ClaimsPrincipal de um fluxo serializado criado usando 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. |
ClaimsPrincipalSelector |
Obtém ou define o delegado usado para selecionar a entidade de segurança de declarações retornada pela propriedade Current. |
Current |
Obtém a entidade de segurança de declarações atual. |
CustomSerializationData |
Contém quaisquer dados adicionais fornecidos por um tipo derivado. Normalmente definido ao chamar 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. |
Identity |
Obtém a identidade de declarações principal associada a essa entidade de segurança de declarações. |
PrimaryIdentitySelector |
Obtém ou define o delegado usado para selecionar a identidade baseada em declarações retornada pela propriedade Identity. |
Métodos
AddIdentities(IEnumerable<ClaimsIdentity>) |
Adiciona as identidades baseadas em declarações especificadas a esta entidade de segurança de declarações. |
AddIdentity(ClaimsIdentity) |
Adiciona a identidade baseada em declarações especificada a esta entidade de segurança de declarações. |
Clone() |
Retorna uma cópia desta instância. |
CreateClaimsIdentity(BinaryReader) |
Cria uma nova identidade baseada em declarações. |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
FindAll(Predicate<Claim>) |
Recupera todas as declarações que correspondem ao predicado especificado. |
FindAll(String) |
Recupera todas as declarações que têm o tipo de declaração especificado. |
FindFirst(Predicate<Claim>) |
Recupera a primeira declaração correspondente ao predicado especificado. |
FindFirst(String) |
Recupera a primeira declaração com o tipo de declaração especificado. |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetObjectData(SerializationInfo, StreamingContext) |
Preenche o SerializationInfo com os dados necessários para serializar o objeto de ClaimsPrincipal atual. |
GetType() |
Obtém o Type da instância atual. (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. |
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. |
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. |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
WriteTo(BinaryWriter) |
Serializa usando um BinaryWriter. |
WriteTo(BinaryWriter, Byte[]) |
Serializa usando um BinaryWriter. |