Architecture Net



         

Принципалы и личности - часть 3


Есть несколько типов объектов личности. Поскольку это Windows-программа, то имеется объект Windowsldentity, связанный с WindowsPrincipal. Вот пример, при выполнении которого распечатывается информация о свойствах объекта личности. На печать выводятся имя пользователя текущего потока и тип используемого опознавания.

Ildentity *ii = ip->Identity; Console::WriteLine(
"Thread::CurrentPrincipal Name: {0} Type: {1}
I/ Поток:: Имя {0} Тип: {1}
IsAuthenticated: {2}", ii->Name, // Имя ii->AuthenticationType, _box(ii->IsAuthenticated));

Вот что распечатывается на моей машине:

Thread::CurrentPrincipal Name: HPDESKTOPXAdministrator
Type: NTLM IsAuthenticated: True

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

Имя Поток::CurrentPrincipal: HPDESKTOPXAdministrator
Тип: NTLM IsAuthenticated: Истина

Подстановка имени вашей машины в примерах

В нескольких примерах используется такое имя машины, как HPDESKTOP. Запуская примеры на своем компьютере, вы можете подставлять имя соответствующей машины или соответствующего домена.
Работающая на машине операционная система использовала для опознавания протокол NTLM. Пользователь, запустивший программу, был опознан как "Administrator" ("Администратор"). Затем программа проверяет, действительно ли он является объектом Windows Identity. В этом объекте есть и другие свойства и методы, а не только те, что находятся в интерфейсе I Identity. Одним из членов Windows Identity является идентификатор лексемы учетной записи для Win32. Это идентификатор пользователя выполняемого потока.

// получить информацию от личности из WindowsPrincipal Windowsldentity *wi =
dynamic_cast<Windows!dentity *>(wp->Identity); if (wi != OY
Console::WriteLine(
"WindowsPrincipal Identity Name: {0} Type: {1}
Authenticated: {2} Token: {3}",
// Опознан: {2} Лексема: {3} ",
wi->Name, // Имя
wi->AuthenticationType,
_box(wi->IsAuthenticated),
_box(wi->Token)); // Лексема

Зная имя пользователя, можно решать программным путем, есть ли у пользователя право производить некоторые операции, не выполняя при этом те или иные ветви кода. (Иначе говоря, зная имя пользователя, можно определить полномочия.) Это показано в примере RoleBasedSecurity с помощью оператора условного перехода if-else.




Содержание  Назад  Вперед