Поделиться через


Практическое руководство. Создание объекта WindowsPrincipal

Примечание.

Эта статья применима к Windows.

Сведения о ASP.NET Core см. в разделе ASP.NET Core Security.

Существует два способа создания объекта WindowsPrincipal в зависимости от того, должен ли код выполнять проверку на основании ролей многократно или всего один раз.

Если код должен многократно выполнять проверку на основе ролей, первая из следующих процедур создает меньше служебных данных. Если коду требуется выполнять проверку на основе ролей только один раз, можно создать объект WindowsPrincipal при помощи второй из приведенных ниже процедур.

Создание объекта WindowsPrincipal для повторяющейся проверки

  1. Вызовите метод SetPrincipalPolicy для объекта AppDomain, возвращенного статическим свойством AppDomain.CurrentDomain, передав в метод PrincipalPolicy значение перечисления, которое указывает, какой должна быть новая политика. Поддерживаются значения NoPrincipal, UnauthenticatedPrincipal и WindowsPrincipal. Вызов этого метода демонстрируется в следующем коде.

    AppDomain.CurrentDomain.SetPrincipalPolicy(  
        PrincipalPolicy.WindowsPrincipal);  
    
    AppDomain.CurrentDomain.SetPrincipalPolicy( _  
        PrincipalPolicy.WindowsPrincipal)  
    
  2. После задания политики используйте статическое свойство Thread.CurrentPrincipal для извлечения субъекта, инкапсулирующего текущего пользователя Windows. Поскольку возвращаемое свойство имеет тип IPrincipal, результат необходимо привести к типу WindowsPrincipal. Следующий код инициализирует новый объект WindowsPrincipal значением субъекта, связанного с текущим потоком.

    WindowsPrincipal myPrincipal =
        (WindowsPrincipal) Thread.CurrentPrincipal;  
    
    Dim myPrincipal As WindowsPrincipal = _  
        CType(Thread.CurrentPrincipal, WindowsPrincipal)
    
  3. После создания объекта субъекта можно использовать один из нескольких методов для его проверки.

Создание объекта WindowsPrincipal для однократной проверки

  1. Инициализируйте новый объект WindowsIdentity путем вызова статического метода WindowsIdentity.GetCurrent, который отправляет запрос в текущую учетную запись Windows и помещает сведения об этой учетной записи во вновь созданный объект идентификатора. Следующий код создает новый объект WindowsIdentity и инициализирует его текущим пользователем, прошедшим проверку подлинности.

    WindowsIdentity myIdentity = WindowsIdentity.GetCurrent();  
    
    Dim myIdentity As WindowsIdentity = WindowsIdentity.GetCurrent()  
    
  2. Создайте новый объект WindowsPrincipal и передайте ему значение объекта WindowsIdentity, созданного в предыдущем шаге.

    WindowsPrincipal myPrincipal = new WindowsPrincipal(myIdentity);  
    
    Dim myPrincipal As New WindowsPrincipal(myIdentity)  
    
  3. После создания объекта субъекта можно использовать один из нескольких методов для его проверки.

См. также