Objetos Principal e Identity

 

Código gerenciado pode descobrir a identidade ou a função de uma entidade de segurança por meio de um Principal objeto, que contém uma referência a um identidade objeto. Pode ser útil comparar objetos identity e principal para conceitos familiares, como contas de usuário e grupo. Na maioria dos ambientes de rede, contas de usuário representam pessoas ou programas, enquanto as contas de grupo representam determinadas categorias de usuários e os direitos que eles possuem. Da mesma forma, os objetos de identidade do .NET Framework representam usuários, enquanto funções representam membros e contextos de segurança. No .NET Framework, o objeto principal encapsula um objeto de identidade e uma função. Aplicativos do .NET framework concedem direitos para a entidade de segurança com base em sua identidade ou, mais comumente, sua associação de função.

O objeto de identidade encapsula informações sobre o usuário ou a entidade que está sendo validada. Em seu nível mais básico, objetos de identidade contêm um nome e um tipo de autenticação. O nome pode ser um nome de usuário ou o nome de uma conta do Windows, enquanto o tipo de autenticação pode ser um protocolo de logon com suporte, como Kerberos V5, ou um valor personalizado. O .NET Framework define uma GenericIdentity objeto que pode ser usado para a maioria dos cenários de logon personalizados e mais especializado WindowsIdentity objeto que pode ser usado quando você deseja que seu aplicativo depender de autenticação do Windows. Além disso, você pode definir sua própria classe de identidade que encapsula informações de usuário personalizada.

O IIdentity interface define propriedades para acessar um nome e um tipo de autenticação, como Kerberos V5 ou NTLM. Todos os identidade classes implementam a IIdentity interface. Não há nenhuma relação necessária entre um identidade token de objeto e o processo do Windows NT em que um thread está em execução atualmente. No entanto, se o identidade objeto é um WindowsIdentity do objeto, a identidade é considerada para representar um token de segurança do Windows NT.

O objeto representa o contexto de segurança sob a qual o código está em execução. Aplicativos que implementam a segurança baseada em função concedem direitos com base em função associada a um objeto de entidade. Semelhante aos objetos de identidade, o .NET Framework fornece um GenericPrincipal objeto e um WindowsPrincipal objeto. Você também pode definir suas próprias classes de entidade de segurança personalizadas.

O IPrincipal interface define uma propriedade para acessar um tipo de objeto identidade do objeto, bem como um método para determinar se o usuário identificado pelo Principal objeto é um membro de uma determinada função. Todos os Principal classes implementam a IPrincipal interface, bem como quaisquer propriedades e métodos adicionais que são necessários. Por exemplo, o common language runtime fornece a WindowsPrincipal classe, que implementa a funcionalidade adicional para o mapeamento de associação de grupo do Windows NT ou Windows 2000 para funções.

Um Principal objeto é associado a um contexto de chamada (CallContext) objeto dentro de um domínio de aplicativo (AppDomain). Um contexto de chamada padrão sempre é criado com cada novo AppDomain, portanto, sempre há um contexto de chamada disponível para aceitar o Principal objeto. Quando um novo segmento é criado, um CallContext objeto também é criado para o thread. O Principal referência de objeto é automaticamente copiada do thread de criação para o novo thread CallContext. Se o tempo de execução não pode determinar qual Principal objeto pertence ao criador do thread, ele segue a política padrão para Principal e identidade criação do objeto.

Uma política específica do domínio de aplicativo configurável define as regras para decidir qual tipo de Principal objeto para associar um novo domínio de aplicativo. Quando a política de segurança permite, o tempo de execução pode criar Principal e identidade objetos que refletem o token do sistema operacional associado com o segmento atual de execução. Por padrão, o tempo de execução usa Principal e identidade objetos que representam os usuários não autenticados. O tempo de execução não cria esses padrão Principal e identidade objetos até que o código tenta acessá-los.

Confiável o código que cria um domínio de aplicativo pode definir a política de domínio de aplicativo que controla a construção do padrão Principal e identidade objetos. Essa diretiva específica do domínio de aplicativo se aplica a todos os threads de execução no domínio de aplicativo. Um host confiável, não gerenciado inerentemente tem a capacidade de definir essa política, mas o código gerenciado que define essa diretiva deve ter o System.Security.Permissions.SecurityPermission para controlar a diretiva de domínio.

Ao transmitir um Principal objeto entre domínios de aplicativo, mas dentro do mesmo processo (e, portanto, no mesmo computador), a infra-estrutura de comunicação remota copia uma referência para o Principal objeto associado com o contexto do chamador ao contexto do chamador.

Mostrar: