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


Объекты Principal и Identity

Обновлен: Ноябрь 2007

Управляемый код может получить удостоверение или роль принципала с помощью объекта Principal, который содержит ссылку на объект Identity. Можно сравнить объект-участник и объект-удостоверение с такими привычными понятиями, как учетные записи пользователя и группы. В большинстве сетевых сред учетные записи пользователей представляют собой людей или программы, тогда как учетные записи групп представляют собой определенные категории пользователей и предоставленные им права. Подобным образом объекты-удостоверения в .NET Framework представляют собой пользователей, тогда как роли представляют собой членства и контексты безопасности. В .NET Framework объекты-участники инкапсулируют объекты-удостоверения и роль. Приложения .NET Framework дают права участникам на основании их удостоверений или, в общем случае, на основании их ролевых членств.

Объекты Identity

Объект-удостоверение инкапсулирует информацию о проверяемом пользователе или сущности. В самом общем случае объект-удостоверение содержит имя и тип проверки подлинности. Имя может быть именем пользователя или именем учетной записи Windows, тогда как тип проверки подлинности может быть либо поддерживаемым протоколом начала сеанса, таким как Kerberos V5, либо пользовательским значением. В .NET Framework определен объект GenericIdentity, который может быть использован для пользовательских сценариев входа в систему, и более специализированный объект WindowsIdentity, если нужно, чтобы приложение использовало проверку подлинности Windows. Кроме того, можно определить собственный класс удостоверений, который инкапсулирует определенную пользователем информацию.

Интерфейс IIdentity определяет свойства доступа к имени и тип проверки подлинности, например Kerberos V5 или NTLM. Классы Identity реализуют интерфейс IIdentity. Объект Identity не обязательно взаимодействует с лексемой процесса Windows NT, под которой выполняется текущий поток. Однако если объект Identity является объектом WindowsIdentity, то предполагается, что удостоверение предоставляет лексему безопасности Windows NT.

Объекты Principal

Объект-участник представляет контекст безопасности, в котором работает код. Приложения, реализующие безопасность на основании ролей, предоставляют права на основании роли, связанной с объектом-участником. Так же, как и в случае с объектом-удостоверением, .NET Framework реализует объект GenericPrincipal и объект WindowsPrincipal. Кроме того, можно определить собственные классы участников.

Интерфейс IPrincipal определяет свойство доступа к связанному объекту Identity, а также метод для определения, является ли определенный объектом Principal пользователь членом данной роли. Все классы Principal реализуют интерфейс IPrincipal точно так же, как и любые другие необходимые дополнительные свойства и методы. Например, среда CLR реализует класс WindowsPrincipal, который обеспечивает дополнительную функциональность для отображения членства групп в Windows NT или Windows 2000 ролям.

Объект Principal привязан к объекту контекста вызова (CallContext) в рамках домена приложения (AppDomain). Контекст вызова по умолчанию всегда создается с каждым новым AppDomain, так что всегда есть доступный контекст вызова для объекта Principal. Когда создается новый поток, для него создается и объект CallContext. Ссылка для объекта Principal автоматически копируется из создаваемого потока в новый контекст CallContext потока. Если среда выполнения не может определить, какой объект Principal принадлежит создателю потока, она следует политике по умолчанию для создания объектов Principal и Identity.

Настраиваемая политика домена приложения определяет правила решения, какой тип объекта Principal связать с новым доменом приложения. Когда политика безопасности это позволяет, среда выполнения может создать объекты Principal и Identity, которые отражают лексему операционной системы, связанную с текущим потоком выполнения. По умолчанию среда выполнения использует объекты Principal и Identity, которые представляют собой пользователей, не прошедших проверку подлинности. Среда выполнения не создает эти объекты по умолчанию Principal и Identity до тех пор, пока программный код не попытается получить к ним доступ.

Доверенный код, создавший домен приложения, может установить политику домена приложения, которая контролирует построение объектов по умолчанию Principal и Identity. Эта политика приложения для определенного домена применяется ко всем выполняемым потокам в данном домене приложения. Неуправляемый доверенный хост имеет возможность устанавливать эту политику, в то время как управляемый код, который устанавливает политику, должен иметь System.Security.Permissions.SecurityPermission для управления политикой домена.

Когда объект Principal передается между доменами приложений, но в рамках одного процесса (и, следовательно, на этом же компьютере), инфраструктура удаленного взаимодействия копирует ссылку на объект Principal, связанный с контекстом вызывающего объекта, в контекст вызываемого объекта.

См. также

Задачи

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

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

Основные понятия

Замена объекта Principal

Олицетворение и возвращение

Другие ресурсы

Безопасность на основе ролей

Основные понятия безопасности