ClaimsPrincipal Classe

Definição

Uma IPrincipal implementação que suporta múltiplas identidades baseadas em sinistros.

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 seguinte extrai as reivindicações apresentadas por um utilizador num pedido HTTP e escreve-as na resposta HTTP. O utilizador atual é lido a partir do HttpContext como um ClaimsPrincipal. As afirmações são então lidas a partir dela e depois escritas para a 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>");
   }
}

Observações

A partir do .NET Framework 4.5, o Windows Identity Foundation (WIF) e a identidade baseada em reclamações estão totalmente integrados no .NET Framework. Isto significa que muitas classes que representam um principal no .NET Framework derivam agora de ClaimsPrincipal em vez de simplesmente implementar a interface IPrincipal. Para além de implementar a IPrincipal interface, ClaimsPrincipal expõe propriedades e métodos úteis para trabalhar com sinistros.

ClaimsPrincipal expõe uma coleção de identidades, cada uma das quais é um ClaimsIdentity. No caso comum, esta coleção, que é acedida através da Identities propriedade, terá apenas um elemento.

A introdução de ClaimsPrincipal em .NET 4.5 como o principal do qual deriva a maioria das classes principais não o obriga a mudar nada na forma como lida com a identidade. No entanto, abre mais possibilidades e oferece mais oportunidades para exercer um controlo de acesso mais preciso. Por exemplo:

  • O próprio código da aplicação pode trabalhar diretamente com as reivindicações contidas no princípio atual para impulsionar tarefas adicionais de autenticação, autorização e personalização.

  • Pode antecipar os seus recursos com um pipeline de processamento de sinistros, que pode lidar com pedidos de autenticação e política de autorização mesmo antes da execução chegar ao seu código. Por exemplo, pode configurar uma aplicação ou serviço baseado na web com um gestor personalizado de autenticação de reivindicações, uma instância de uma classe que deriva dessa ClaimsAuthenticationManager classe. Quando assim configurado, o pipeline de processamento de pedidos invoca o Authenticate método no seu gestor de autenticação de reclamações, passando-lhe a ClaimsPrincipal que representa o contexto do pedido recebido. O seu gestor de autenticação de reclamações pode então realizar a autenticação com base nos valores das reclamações recebidas. Também pode filtrar, transformar ou adicionar reclamações ao conjunto de reivindicações recebidas. Por exemplo, pode ser usado para enriquecer o conjunto de reivindicações recebidas com novas reivindicações criadas a partir de uma fonte de dados local, como um perfil de utilizador local

  • Pode configurar uma aplicação web com um gestor personalizado de autorização de sinistros, uma instância de uma classe que deriva dessa ClaimsAuthorizationManager classe. Quando assim configurado, o pipeline de processamento de pedidos empacota a entrada ClaimsPrincipal em e AuthorizationContext invoca o CheckAccess método no seu gestor de autorização de sinistros. O seu gestor de autorização de sinistros pode então fazer cumprir a autorização com base nas reclamações recebidas.

  • As verificações de acesso ao código baseadas em reclamações podem ser realizadas configurando a sua aplicação com um gestor personalizado de autorização de reclamações e utilizando a ClaimsPrincipalPermission classe para realizar verificações imperativas de acesso ou ClaimsPrincipalPermissionAttribute para realizar verificações declarativas. As verificações de acesso ao código baseadas em sinistros são realizadas em linha, fora do pipeline de processamento, e por isso estão disponíveis para todas as aplicações desde que um gestor de autorização de sinistros esteja configurado.

Pode obter uma ClaimsPrincipal instância para o principal associado a um pedido, ou para o principal sob o qual um thread está a ser executado, numa aplicação relying party (RP) ao lançar a Thread.CurrentPrincipal propriedade para ClaimsPrincipal. As reivindicações associadas a um ClaimsPrincipal objeto estão disponíveis através da sua Claims propriedade. A Claims propriedade devolve todas as reivindicações contidas pelas identidades associadas ao principal. No caso raro em que contém ClaimsPrincipal múltiplas ClaimsIdentity instâncias, pode usar a Identities propriedade ou aceder à identidade principal usando a Identity propriedade. ClaimsPrincipal fornece vários métodos através dos quais estas reivindicações podem ser pesquisadas e suporta totalmente o Language Integrated Query (LINQ). As identidades podem ser adicionadas ao principal usando os AddIdentities métodos ou.AddIdentity

Note

Para adicionar identidades ao ClaimsPrincipal, um chamador deve ter total confiança.

Por defeito, a WIF prioriza WindowsIdentity os objetos ao selecionar a identidade principal para devolver através da Identity propriedade. Pode alterar este comportamento fornecendo um representante através da PrimaryIdentitySelector propriedade para realizar a seleção. A ClaimsPrincipalSelector propriedade oferece funcionalidades semelhantes para a Current propriedade.

No modelo baseado em reivindicações, se um principal está num papel especificado é determinado pelas reivindicações apresentadas pelas suas identidades subjacentes. O IsInRole método examina essencialmente cada identidade associada ao principal para determinar se possui uma reivindicação com o valor de papel especificado. O tipo da reivindicação (representada pela sua Claim.Type propriedade) usada para determinar quais as reivindicações que devem ser examinadas durante as verificações de papel é especificado numa identidade através da sua ClaimsIdentity.RoleClaimType propriedade. Assim, as reivindicações analisadas durante as verificações de papel podem ser de um tipo diferente para diferentes identidades associadas ao principal.

Construtores

Name Description
ClaimsPrincipal()

Inicializa uma nova instância da ClaimsPrincipal classe.

ClaimsPrincipal(BinaryReader)

Inicializa uma instância de ClaimsPrincipal com o especificado BinaryReader.

ClaimsPrincipal(IEnumerable<ClaimsIdentity>)

Inicializa uma nova instância da ClaimsPrincipal classe usando as identidades de reivindicações especificadas.

ClaimsPrincipal(IIdentity)

Inicializa uma nova instância da ClaimsPrincipal classe a partir da identidade especificada.

ClaimsPrincipal(IPrincipal)

Inicializa uma nova instância da ClaimsPrincipal classe a partir do principal especificado.

ClaimsPrincipal(SerializationInfo, StreamingContext)
Obsoleto.

Inicializa uma nova instância da ClaimsPrincipal classe a partir de um fluxo serializado criado usando ISerializable.

Propriedades

Name Description
Claims

Obtém uma coleção que contém todas as reivindicações de todas as identidades de reivindicações associadas ao principal deste pedido.

ClaimsPrincipalSelector

Obtém ou define o delegado usado para selecionar o principal das reivindicações devolvido pela Current propriedade.

Current

Obtém o principal atual das reclamações.

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 de reivindicações associadas ao principal deste pedido.

Identity

Obtém a identidade principal do sinistro associada ao principal deste sinistro.

PrimaryIdentitySelector

Obtém ou define o delegado usado para selecionar a identidade das reivindicações devolvida pela Identity propriedade.

Métodos

Name Description
AddIdentities(IEnumerable<ClaimsIdentity>)

Adiciona as identidades especificadas das reivindicações ao principal dessa reivindicação.

AddIdentity(ClaimsIdentity)

Adiciona a identidade especificada das reivindicações ao principal dessa reivindicação.

Clone()

Devolve uma cópia desta ocorrência.

CreateClaimsIdentity(BinaryReader)

Cria uma nova identidade de reclamação.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

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

Recupera todas as reivindicações que são correspondidas pelo predicado especificado.

FindAll(String)

Recupera todas as reivindicações que tenham o tipo de reivindicação especificado.

FindFirst(Predicate<Claim>)

Recupera a primeira afirmação que é correspondida pelo predicado especificado.

FindFirst(String)

Recupera a primeira reivindicação com o tipo especificado.

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetObjectData(SerializationInfo, StreamingContext)

Preenche os SerializationInfo dados necessários para serializar o objeto atual ClaimsPrincipal .

GetType()

Obtém o Type da instância atual.

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

Determina se alguma das identidades das reivindicações associadas ao principal desta reivindicação contém uma reivindicação correspondida ao predicado especificado.

HasClaim(String, String)

Determina se alguma das identidades de reivindicações associadas ao principal deste pedido contém uma reivindicação com o tipo e valor especificados.

IsInRole(String)

Devolve um valor que indica se a entidade (utilizador) representada por este principal de reivindicação está no papel especificado.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

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

Serializa usando um BinaryWriter.

WriteTo(BinaryWriter)

Serializa usando um BinaryWriter.

Aplica-se a

Ver também