Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Restrict access to .NET assembly?

Is there a way to have a .NET assembly accessible for only authorized sources?

I mean I want to have a DLL that contains components, but I don't want anyone to be able to use these components but the other DLLs EXEs in my solution. I do want them to be in separated DLLs though.

Restriction on namespace might also be a good idea if this feature exists out there.

Is there a way?

like image 736
Shimmy Weitzhandler Avatar asked Sep 12 '09 21:09

Shimmy Weitzhandler


2 Answers

You can create internal classes. And the give your specified assemblies to access these classes by using InternalsVisibleTo attribute.

The assembly should be strong named. You can find more information about the attribute in this article.

like image 159
Vadim Avatar answered Nov 03 '22 07:11

Vadim


The problem with Internal classes is Internal has no meaning in IL and the classes can be called via reflection. So using InternalsVisibleTo is more a helper for the compiler than anything else.

You can go one step further using the StrongNameIdentityPermission which will check the public key of the strong named assembly calling into the code - if the public key doesn't match then a security exception is thrown. This is enforced even when code is called via reflection.

like image 27
blowdart Avatar answered Nov 03 '22 05:11

blowdart