2012-12-04 2 views
6

У меня есть требование ограничить сборку, чтобы ее могли использовать только сборки, которые подписываются с заданным ключом. Я неопытен, но я понимаю, что подписание выполняется, чтобы определить, кто создал сборку. Следовательно, просто подписать эту сборку не должно быть достаточно, чтобы гарантировать, что все вызывающие сборки будут подписаны. Вероятно, обратное верно, т. Е. Если сборка подписана, все ее сборки должны быть подписаны (возможно, одним и тем же ключом). Каким будет способ удовлетворить это требование?Ограничение использования сборки из сборок, которые не подписаны

+1

Вы имеете в виду что-то вроде этого http://blogs.msdn.com/b/shawnfa/archive/2004/06/07/150378.aspx? – V4Vendetta

ответ

4

Вы можете использовать PublisherIdentityPermissionAttribute.

Если вы примените PublisherIdentityPermissionAttribute к классу MyClass, то только классы в сборках, подписанные сертификатом mycert.cer, могут использовать ваш класс. Вам нужно положить SecurityAction.Demand

Все абоненты выше в стеке вызовов обязаны были предоставлены разрешения, указанного в текущем объекта разрешения

Используйте как

[PublisherIdentityPermission(SecurityAction.Demand, CertFile = "mycert.cer")] 
public class MyClass 

Вы можете также используйте его на уровне сборки для защиты всей сборки (однако безопасность уровня сборки не будет работать с .Net 4.0, если вы не установили <NetFx40_LegacySecurityPolicy enabled="true"/> в конфигурации).

+0

Пожалуйста, не просто ответьте по ссылке. Дайте некоторое объяснение и пример того, как использовать его для решения проблемы OP. – Rawling

+0

@ Rawling Я редактировал свой ответ. –

Смежные вопросы