Udostępnij za pośrednictwem


Porady: tworzenie obiektu WindowsPrincipal

Uwaga

Ten artykuł dotyczy systemu Windows.

Aby uzyskać informacje na temat ASP.NET Core, zobacz ASP.NET Core Security.

Istnieją dwa sposoby tworzenia WindowsPrincipal obiektu, w zależności od tego, czy kod musi wielokrotnie wykonywać walidację opartą na rolach, czy musi wykonywać go tylko raz.

Jeśli kod musi wielokrotnie wykonywać walidację opartą na rolach, pierwsza z poniższych procedur generuje mniejsze obciążenie. Jeśli kod musi dokonać weryfikacji opartych na rolach tylko raz, można utworzyć WindowsPrincipal obiekt przy użyciu drugiej z poniższych procedur.

Aby utworzyć obiekt WindowsPrincipal na potrzeby powtarzanej walidacji

  1. Wywołaj metodę SetPrincipalPolicy dla AppDomain obiektu zwróconego przez właściwość statyczną AppDomain.CurrentDomain , przekazując metodę PrincipalPolicy wartość wyliczenia, która wskazuje, jakie powinny być nowe zasady. Obsługiwane wartości to NoPrincipal, UnauthenticatedPrincipali WindowsPrincipal. Poniższy kod demonstruje to wywołanie metody.

    AppDomain.CurrentDomain.SetPrincipalPolicy(  
        PrincipalPolicy.WindowsPrincipal);  
    
    AppDomain.CurrentDomain.SetPrincipalPolicy( _  
        PrincipalPolicy.WindowsPrincipal)  
    
  2. W przypadku zestawu zasad użyj właściwości statycznej Thread.CurrentPrincipal , aby pobrać podmiot zabezpieczeń, który hermetyzuje bieżącego użytkownika systemu Windows. Ponieważ zwracany typ właściwości to IPrincipal, należy rzutować wynik na WindowsPrincipal typ. Poniższy kod inicjuje nowy WindowsPrincipal obiekt do wartości podmiotu zabezpieczeń skojarzonego z bieżącym wątkiem.

    WindowsPrincipal myPrincipal =
        (WindowsPrincipal) Thread.CurrentPrincipal;  
    
    Dim myPrincipal As WindowsPrincipal = _  
        CType(Thread.CurrentPrincipal, WindowsPrincipal)
    
  3. Po utworzeniu obiektu podmiotu zabezpieczeń można użyć jednej z kilku metod do jego zweryfikowania.

Aby utworzyć obiekt WindowsPrincipal dla pojedynczej weryfikacji

  1. Zainicjuj nowy WindowsIdentity obiekt, wywołując metodę statyczną WindowsIdentity.GetCurrent , która wysyła zapytanie do bieżącego konta systemu Windows i umieszcza informacje o tym koncie w nowo utworzonym obiekcie tożsamości. Poniższy kod tworzy nowy WindowsIdentity obiekt i inicjuje go do bieżącego uwierzytelnionego użytkownika.

    WindowsIdentity myIdentity = WindowsIdentity.GetCurrent();  
    
    Dim myIdentity As WindowsIdentity = WindowsIdentity.GetCurrent()  
    
  2. Utwórz nowy WindowsPrincipal obiekt i przekaż mu wartość WindowsIdentity obiektu utworzonego w poprzednim kroku.

    WindowsPrincipal myPrincipal = new WindowsPrincipal(myIdentity);  
    
    Dim myPrincipal As New WindowsPrincipal(myIdentity)  
    
  3. Po utworzeniu obiektu podmiotu zabezpieczeń można użyć jednej z kilku metod do jego zweryfikowania.

Zobacz też