Иллюстрированный самоучитель по Architecture .NET

Личность кода. Классы разрешений для личности. Подтверждение.

При выполнении этого примера должна получиться примерно следующая выдача:

Evidence Enumerator has 4 members System. Security.Policy.Zone
MyComputer System.Security.Policy.Url
file:///C:/01/NetCpp/Chapl3/Evidence/Debug/Evidence.exe
System.Security.Policy.StrongName
StrongName of Assembly is: Evidence version: 1.0.685.28667
Assembly public key: 0024000004800…
…EA897BA System.Security.Policy.Hash
MD5 Hash of Assembly:
41601023422625513614244127248522225222668
SHA1 Hash of Assembly:
216132245725424821…

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

Перечисление Evidence имеет 4 члена Система. Защита. Политика. Зона
MyComputer Система. Защита. Политика. Url
file:///С:/OI/NetCpp/Chapl3/Evidence/Debug/Evidence.exe
Система. Защита. Политика.
StrongName
StrongName сборки:
версия Evidence: 1.0.685.28667
Открытый ключ сборки: 0024000004800…
… ЕА897ВА Система.
Защита.
Политика.
Хэш-код
MD5 Хэш-код сборки:
41601023422625513614244127248522225222668
SHA1 Хэш-код сборки:
216132245725424821…

Для этой сборки подтверждением, относящимся к Zone (Зона), является MyComputer. Подтверждение Url – это местоположение сборки на диске. Что касается подтверждения Hash, то оно может дать нам хэш-коды сборки, а именно MD5 и SHA1. Подтверждение StrongName дает нам информацию об уникальном имени сборки, полученном из атрибута AssemblyKeyFileAttribute("KeyPair.snk") в исходном файле Assemblylnfo.cpp.

Кое-что из этого подтверждения можно преобразовать в соответствующие разрешения для личности. Например, у класса Zone (Зона) имеется метод CreateldentityPermission. Он возвращает интерфейс iPermission, который представляет, в свою очередь, экземпляр ZoneldentityPermission, связанный с этой частью подтверждения. Похожие методы имеются у классов Url (унифицированный указатель информационного ресурса) и StrongName.

Другой способ просмотра разрешений для личности – это получить ответы на рад вопросов.

  • Кто опубликовал (подписал) этот код?
  • Какое имя сборки?
  • Из какого Web-узла или унифицированного указателя информационного ресурса (URL) она была загружена?
  • Из какой зоны получен код?

Создатель прикладной области (хоста) может также предоставить подтверждение, передавая его коллекции Evidence (Подтверждение) при вызове метода ExecuteAssembly. Конечно, у такого кода должно быть разрешение ControlEvidence. Общеязыковой среде выполнения CLR также доверено добавлять подтверждение, ведь, кроме всего прочего, именно она проводит политику безопасности. Подтверждение можно расширять: вы можете определять свои типы подтверждений и использовать их в политике безопасности.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.