Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Эта статья относится к Windows.
Сведения о ASP.NET Core см. в разделе ASP.NET Core Security.
Управляемый код может выявить удостоверение или роль субъекта через объект IPrincipal, который содержит ссылку на объект IIdentity. Это может быть полезно для сравнения удостоверений и основных объектов с знакомыми понятиями, такими как учетные записи пользователей и групп. В большинстве сетевых сред учетные записи пользователей представляют людей или программы, а учетные записи групп представляют определенные категории пользователей и права, которыми они обладают. Аналогичным образом объекты удостоверений .NET представляют пользователей, а роли представляют членство и контексты безопасности. В .NET основной объект инкапсулирует как объект удостоверения, так и роль. Приложения .NET предоставляют права субъекту на основе его идентичности или, как правило, принадлежности к роли.
Идентификационные объекты
Объект идентификации инкапсулирует информацию о пользователе или сущности, которые подлежат проверке. На самом базовом уровне объекты удостоверений содержат имя и тип проверки подлинности. Имя может быть именем пользователя или именем учетной записи Windows, а тип проверки подлинности может быть поддерживаемым протоколом входа, например Kerberos V5 или пользовательским значением. .NET определяет GenericIdentity объект, который можно использовать для большинства пользовательских сценариев входа в систему и более специализированный WindowsIdentity объект, который можно использовать, если требуется, чтобы приложение использовало проверку подлинности Windows. Кроме того, можно определить собственный класс идентичности, который инкапсулирует сведения о пользователе.
Интерфейс IIdentity определяет свойства для доступа к имени и типу проверки подлинности, например Kerberos V5 или NTLM. Все классы Identity реализуют интерфейс IIdentity . Между объектом Identity и маркером процесса Windows, под управлением которого в настоящий момент выполняется поток, нет необходимой связи. Однако если объект Identity является объектом WindowsIdentity , предполагается, что удостоверение представляет маркер безопасности Windows.
Основные объекты
Основной объект представляет контекст безопасности, в котором выполняется код. Приложения, реализующие безопасность на основе роли, предоставляют права на основе роли, связанной с главным объектом. Как и объекты удостоверений, .NET предоставляет GenericPrincipal объект и WindowsPrincipal объект. Вы также можете определить собственные классы основных объектов.
Интерфейс IPrincipal определяет свойство для доступа к связанному объекту Identity, а также метод для определения того, является ли пользователь, идентифицированный объектом Principal, членом данной роли. Все классы Principal реализуют интерфейс IPrincipal, а также любые дополнительные свойства и методы, которые необходимы. Например, среда CLR предоставляет класс WindowsPrincipal , который реализует дополнительные функции для сопоставления членства в группах с ролями.
Объект Principal привязан к объекту контекста вызова (CallContext) в домене приложения (AppDomain). Контекст вызова по умолчанию всегда создается с каждым новым доменом приложения, поэтому для принятия объекта Principal всегда доступен контекст вызова. При создании нового потока объект CallContext также создается для потока. Ссылка на основной объект автоматически копируется из создаваемого потока в callContext нового потока. Если среда выполнения не может определить, какой объект Principal принадлежит создателю потока, она следует политике по умолчанию для создания объекта Principal и Identity.
Настраиваемая политика для конкретного домена приложения определяет правила для определения типа основного объекта для связывания с новым доменом приложения. Когда политика безопасности разрешает, среда выполнения может создавать объекты Принципала и Удостоверения, которые отражают токен операционной системы, связанный с текущим потоком выполнения. По умолчанию среда выполнения использует объекты "Субъект " и "Удостоверения ", представляющие пользователей, не прошедших проверку подлинности. Среда выполнения не создает эти объекты Principal и Identity по умолчанию, пока код не пытается получить к ним доступ.
Доверенный код, создающий домен приложения, может задать политику домена приложения, которая управляет процессом создания объектов по умолчанию Principal и удостоверение. Эта политика для конкретного домена приложения применяется ко всем потокам выполнения в этом домене приложения. Неуправляемый доверенный узел, по сути, имеет возможность задать эту политику, но код управления, который задает эту политику, должен иметь System.Security.Permissions.SecurityPermission для контроля над политикой домена.
При передаче объекта Principal между доменами приложений, но в пределах одного процесса (то есть на том же компьютере), инфраструктура удаленного взаимодействия копирует ссылку на объект Principal, связанный с контекстом вызывающего объекта, в контекст вызываемого объекта.