Книга: C# для профессионалов. Том II
Принципал Windows
Принципал Windows
Создадим консольное приложение, предоставляющее доступ к принципалу в приложении. в котором мы хотим пользоваться описанной ниже учетной записью Windows. Нам необходимы пространства имен System.Security.Principal
и System.Threading
. Прежде всего нужно задать, что мы хотим, чтобы .NET автоматически соединял принципал с описанной ниже учетной записью Windows, так как в .NET это не происходит автоматически по соображениям безопасности. Наше задание:
using System;
using System.Security.Principal;
using System.Security.Permissions;
using System.Threading;
namespace SecurityApplication2 {
class Class1 {
static void Main(string[] args) {
AppDomain.CurrentDomain.SetPrincipalPolicy(
PrincipalPolicy.WindowsPrincipal);
Можно использовать метод WindowsIdentity.GetCurrent()
для доступа к данным учетной записи Windows, однако такой способ подходит, когда необходимо взглянуть на принципал один раз. Если необходимо обратиться к принципалу несколько раз, то более эффективно задать политику так, чтобы текущий поток выполнения предоставлял доступ к принципалу. При использовании метода SetPrincipalPolicy
определяется, что принципал в текущем потоке выполнения должен поддерживать объект WindowsIdentity
. Добавим код для доступа к свойствам принципала из объекта Thread
:
WindowsPrincipal principal =
(WindowsPrincipal)Thread.CurrentPrincipal;
WindowsIdentity identity = (WindowsIdentity)principal.Identity;
Console.WriteLine("IdentityTyрe:" + identity.ToString());
Console.WriteLine("Name:" + identity.Name);
Console.WriteLine(
"Users'?:" + principal.IsInRole("BUILTINUsers"));
Console.WriteLine(
"Administrators' ?: " +
principal.IsInRole(WindowsBuiltInRole.Administrator));
Console.WriteLine("Authenticated:" + identity.IsAuthenticated);
Console.WriteLine("AuthType:" + identity.AuthenticationType);
Console.WriteLine("Anonymous?:" + identity.IsAnonymous);
Console.WriteLine("Token:" + identity.Token);
}
}
}
Вывод из этого консольного приложения будет выглядеть похожим на следующий, в зависимости от конфигурации машины и ролей, ассоциированных с учетной записью, под которой вы зарегистрировались в системе:
IdentityType:System.Security.Principal.WindowsIdentity
Name:MACHINEalaric
'Users'?:True
'Administrators'?:True
Authenticated:True
AuthType:NTLM
Anonymous?:False
Token:256
Очевидно, что крайне полезно иметь возможность получить так легко доступ к данным о текущем пользователе и его ролях, чтобы с помощью этой информации решать, какие действия выполнить и какие отменить. Роли и группы пользователей Windows предоставляют администраторам дополнительную возможность использовать стандартные утилиты администрирования пользователей, и обычно можно избежать изменения кода, когда изменяются роли пользователя. Рассмотрим роли более подробно.
- Принципал
- InterBase Super Server для Windows
- Интеграция с платформой Windows NT
- Часы в Windows показывают неправильное время
- Классическая архитектура на Windows NT (Yaffil CS)
- 4.2. Центр уведомлений Windows 10
- Загрузочные дискеты и Live CD для Windows
- 6.8. Разгон видеокарты на Windows 10
- Интеграция Windows SharePoint и Microsoft Office
- Наик Дайлип Системы хранения данных в Windows
- Глава 10 Возможности подсистемы хранения данных в различных версиях Windows NT
- 1.1 Режимы ядра и пользователя Windows