на начало
На главную страницу
Форум   

Статья :: Роли .NET в Windows


Роли .NET в Windows

Чтобы не проверять каждое имя пользователя, вы можете назначить пользователям те или иные роли Затем можно проверять, принадлежит ли пользователь к определенной роли или нет Примером применения ролей является стандартная группа администраторов Вам не нужно присваивать личности пользователя все полномочия администратора по отдельности, а затем проверять, есть ли у конкретных пользователей те или иные полномочия. Вы просто зачисляете пользователя в группу администраторов И тогда ваш код может проверять, находится ли пользователь в группе администраторов, прежде чем дать ему возможность, например, создать нового пользователя. Надо сказать, что роли .NET отличаются от ролей СОМ+.
Роли в NT4 и Wmdows2000 задаются путем определения групп. Каждая группа представляет какую-либо роль. Перейдите на Control Panel (Панель управления) и выберите команду Administrative Tools (Инструменты администрирования). В списке Administrative Tools (Инструменты администрирования) выберите пункт Computer Management (Управление компьютером). Появится окно дополнительного модуля Computer Management (Управление компьютером), присоединенного к консоли ММС. В этом окне разверните узел Local Users and Groups (Локальные пользователи и группы). Как показано на рис. 13.1, при выборе узла Groups (Группы) вы увидите все группы, определенные на вашей машине. К ним была добавлена группа CustomerAdmm.
Некоторые группы, такие, например, как Administrators (Администраторы) и Guests (Гости), являются встроенными, потому что были для вас заранее определены. Что же касается группы CustomerAdmm, то она определена пользователем. В эту группу входят все администраторы, которые имеют право изменять информацию пользователя Acme
Чтобы добавить на локальную машину новую группу, щелкните правой кнопкой мыши на узле Groups (Группы), а затем выберите команду New Group (Добавление группы). Появится диалоговое окно, которое вам предстоит заполнить.

1.gif

Рис. 13.1. Группы, определенные в машине

Это диалоговое окно, уже заполненное данными для создания новой группы Hote-lAdmin, показано на рис. 13.2. В группу HotelAdmin должны входить все пользователи машины, которые могут добавлять или изменять информацию о гостиницах в системе HotelBroker. Чтобы добавить группу в систему, надо щелкнуть на кнопке Create (Создать). Добавление пользователей в систему или их удаление из нее выполняется, соответственно, с помощью кнопок Add (Добавить) и Remove (Удалить).
Чтобы внести изменения в существующей группе, выделите ее, щелкните на ней правой кнопкой мыши и выберите команду Properties (Свойства). Щелкнув на кнопке Add (Добавить), вы получите диалоговое окно со всеми пользователями системы. Теперь можно выбирать нужных пользователей и добавлять их в группу. На рис. 13.3 показано добавление пользователя в группу HotelAdmin. Обратите внимание, что JaneAdmm и Ре-terT— это ранее созданные и настроенные учетные записи пользователей. Удаление пользователей из группы выполняется с помощью кнопки Remove (Удалить).

2.gif

Рис. 13.2 Диалоговое окно, в котором создается группа HotelAdmin

В программе имя роли надо указывать, используя имя домена или машины. На моей машине роль CustomerAdmm обозначается как "HPDESKTOP\\CustomerAdmm", а роль HotelAdnun — как "HPDESKTOP\\HotelAdmin". Для заранее установленных групп используется префикс "BUILTIN" ("ВСТРОЕННЫЙ"), например, встроенная группа Administrators (Администраторы) обозначается как "BUILTIN\\Admmistrators" ("ВСТРОЕН-НЫЕ\\Администраторы"). Чтобы избежать проблем, связанных с переводом и интернационализацией, для обращения к встроенным ролям используется перечисление System::Security::Principal::WindowsBuiltlnRole (Система .Защита::Прин-ципал-'WindowsBuiltInRole). Вместо того, чтобы использовать строку "BUILTIN\\Admi-nistrators" ("ВСТРОЕННЫЕ\\Администраторы"), группу Administrators (Администраторы) можно обозначать как WindowsBuiltlnRole: :Administrator (Wmdows - Администратор).

3.gif

Рис. 13.3. Добавление в группу пользователя JaneAdmin Уже добавлен пользователь PeterT

Пример RoleBasedSecurity, который мы рассматривали в предыдущем разделе, на этот раз проверяет, имеет ли текущий пользователь несколько ролей Вы можете передавать роль в виде строки или использовать перечисление WindowsBuiltlnRole Помните, что необходимо изменить программу, чтобы использовать фактическое имя вашей машины, когда вы выполняете пример на вашем компьютере Для выбора ветвей кода, соответствующих членству в этих ролях, в программе используется оператор условного перехода if-else

// использовать роль, чтобы выбрать ветвь кода
String *adminRole = "HPDESKTOP\\CustomerAdmin"; // Строка
if(wp->Is!nRole(adminRole))
{
Console.:WriteLine(
"In Customer Administrator role."); // "В роли Администратора." // выбрать ветвь кода для CustomerAdmin... }
else {
Console::WriteLine(
"Not in Customer Administrator role."); // "He в роли Администратора." // не выбирать ветвь кода для CustomerAdmin... }
// использование встроенных ролей для выбора ветви кода if(wp->Is!nRole(WindowsBuiltlnRole::Administrator)) // если Администратор {
Console::WriteLine(
"In Administrator role");
// "В роли Администратора"
// выбрать ветвь кода для Администратора... }
else {
Console::WriteLine(
"Not in Administrator role."); // "He в роли Администратора." // не выбирать ветвь кода для Администратора...
}
if(wp->Is!nRole(WindowsBuiltlnRole::Guest))
// если Гость
{
Console::WriteLine( "In Guest role"); // "В роли Гостя"
// выбрать ветвь кода для Гостя... }
else {
Console::WriteLine(
"Not in Guest role."); // "He в роли Гостя." //не выбирать ветвь кода для Гостя...
}
if(wp->Is!nRole(WindowsBuiltlnRole::User))
// если Пользователь
{
Console::WriteLine(
"In User role");
// "В роли Пользователя" // выбрать ветвь кода для Пользователя...
}
else
{
Console::WriteLine (
"Not in User role"); // "He в роли Пользователя"
// не выбирать ветвь кода для Пользователя... }

Если вы зарегистрировались как Administrator (Администратор), то при выполнении примера RoleBasedSecurity получится следующий вывод

Demanding right to change principal policy
AppDomain Principal Policy changed to WindowsPrincipal
Thread::CurrentPrincipal is a WindowsPrincipal
Thread::CurrentPrincipal Name: HPDESKTOPXAdministrator
Type: NTLM IsAuthenticated: True
WindowsPrincipal Identity Name: HPDESKTOPXAdministrator
Type: NTLM Authenticated: True Token: 260
Name matches HPDESKTOPXAdministrator
In Customer Administrator role
In Administrator role
Not in Guest role
In User role

Перевод такой:

Требование права изменять политику принципала
Политика принципала AppDomain заменена WindowsPrincipal
Поток:: CurrentPrincipal - WindowsPrincipal
Поток:: CurrentPrincipal Имя HPDESKTOP\Administrator
Тип: NTLM IsAuthenticated: Истина
Имя личности WindowsPrincipal: HPDESKTOP\Administrator
Тип: Заверен NTLM: Истинная Лексема: 260
Имя совпадает с HPDESKTOPXAdministrator
В роли Клиентского Администратора
В роли Администратора
Не в роли Гостя
В роли Пользователя

Ну а если вы зарегистрировались как JaneAdmin, то при выполнении RoleBasedSecurity вывод будет следующий:

Demanding right to change principal policy
AppDomain Principal Policy changed to WindowsPrincipal
Thread::CurrentPrincipal is a WindowsPrincipal
Thread::CurrentPrincipal Name: HPDESKTOP\JaneAdmin Type:
NTLM IsAuthenticated: True
WindowsPrincipal Identity Name: HPDESKTOPXJaneAdmin Type:
NTLM Authenticated: True Token: 260
Name does not match HPDESKTOPXAdministrator
Not in Customer Administrator role.
Not in Administrator role.
Not in Guest role.
In User role

Перевод такой:

Требование права изменять политику принципала
Политика принципала AppDomain заменена WindowsPrincipal
Поток:: CurrentPrincipal - WindowsPrincipal
Поток:: CurrentPrincipal Имя: HPDESKTOPXJaneAdmin Тип:
NTLM IsAuthenticated: Истина
Имя личности WindowsPrincipal: HPDESKTOPXJaneAdmin Тип:
NTLM Заверен: Истинная Лексема: 260
Имя не совпадает с HPDESKTOPXAdministrator
Не в роли Клиентского Администратора.
Не в роли Администратора.
Не в роли Гостя.
В роли Пользователя


Роли .NET в Windows

страницы в данном разделе 
Глава 13. Защита Защита
Защита на основе пользователей Защита доступа к коду
Политика безопасности Разрешения
lnternet-безопасность Информационный сервер Internet: Internet Information Server (MS)
Защита .NET на основе ролей Принципалы и личности
Роли .NET в Windows Другие классы личностей
Личность в операционной системе и общеязыковой среде выполнения CLR Разрешения коду на доступ
Простой запрос разрешения кодом Как работает запрос на разрешение
Стратегия запроса разрешений Запрет разрешений
Утверждение разрешений Другие методы разрешений
Класс SecurityPermission Неуправляемый код
Разрешения на основе атрибутов Разрешение принципала
Класс PermissionSet Личность кода
Классы разрешений для личности Подтверждение
Политика безопасности Уровни политики безопасности
Кодовые группы Именованные наборы разрешений
Изменение политики безопасности Резюме


Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)



PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C



 
© faq.pp.ru, справочник программиста