Como: criar um objeto WindowsPrincipal

Observação

Este artigo aplica-se ao Windows.

Para obter informações sobre o ASP.NET Core, confira Segurança do ASP.NET Core.

Há duas maneiras de criar um objeto WindowsPrincipal, dependendo de se o código deve executar repetidamente a validação baseada em função ou deve executá-la apenas uma vez.

Se o código precisar executar repetidamente a validação baseada em função, o primeiro dos procedimentos a seguir produzirá menos sobrecarga. Quando o código precisa fazer validações baseadas em função apenas uma vez, você pode criar um objeto WindowsPrincipal usando o segundo dos procedimentos a seguir.

Para criar um objeto WindowsPrincipal para validação repetida

  1. Chame o método SetPrincipalPolicy no objeto AppDomain que é retornado pela propriedade estática AppDomain.CurrentDomain, passando ao método um valor de enumeração PrincipalPolicy que indica qual deve ser a nova política. Os valores com suporte são NoPrincipal, UnauthenticatedPrincipal e WindowsPrincipal. O código a seguir demonstra essa chamada de método.

    AppDomain.CurrentDomain.SetPrincipalPolicy(  
        PrincipalPolicy.WindowsPrincipal);  
    
    AppDomain.CurrentDomain.SetPrincipalPolicy( _  
        PrincipalPolicy.WindowsPrincipal)  
    
  2. Com a política definida, use a propriedade estática Thread.CurrentPrincipal para recuperar o principal que encapsula o usuário atual do Windows. Como o tipo de retorno da propriedade é IPrincipal, você deve converter o resultado em um tipo WindowsPrincipal. O código a seguir inicializa um novo objeto WindowsPrincipal com o valor do principal associado ao thread atual.

    WindowsPrincipal myPrincipal =
        (WindowsPrincipal) Thread.CurrentPrincipal;  
    
    Dim myPrincipal As WindowsPrincipal = _  
        CType(Thread.CurrentPrincipal, WindowsPrincipal)
    
  3. Quando o objeto principal tiver sido criado, você poderá usar um dos vários métodos para validá-lo.

Para criar um objeto WindowsPrincipal para uma única validação

  1. Inicialize um novo objeto WindowsIdentity chamando o método estático WindowsIdentity.GetCurrent, que consulta a conta atual do Windows e coloca informações sobre essa conta no objeto de identidade recém-criado. O código a seguir cria um novo objeto WindowsIdentity e o inicializa para o usuário autenticado atual.

    WindowsIdentity myIdentity = WindowsIdentity.GetCurrent();  
    
    Dim myIdentity As WindowsIdentity = WindowsIdentity.GetCurrent()  
    
  2. Crie um novo objeto WindowsPrincipal e passe a ele o valor do objeto WindowsIdentity criado na etapa anterior.

    WindowsPrincipal myPrincipal = new WindowsPrincipal(myIdentity);  
    
    Dim myPrincipal As New WindowsPrincipal(myIdentity)  
    
  3. Quando o objeto principal tiver sido criado, você poderá usar um dos vários métodos para validá-lo.

Confira também