2012-12-04 15 views
6

È necessario disporre di una restrizione in un assieme in modo che solo gli assiemi firmati con una determinata chiave possano utilizzarlo. Sono inesperto, ma quello che capisco è che la firma è fatta per aiutare a identificare chi ha creato l'assemblea. Pertanto, firmare questo assembly non dovrebbe essere sufficiente per garantire che tutti gli assembly di chiamata siano firmati. Probabilmente è vero il contrario, cioè se un assembly è firmato, tutti gli assiemi da cui dipende devono essere firmati (probabilmente con la stessa chiave). Quale sarebbe il modo di soddisfare il requisito?Limitazione dell'utilizzo di un assieme da assiemi non firmati

+1

Intendi qualcosa come questo http://blogs.msdn.com/b/shawnfa/archive/2004/06/07/150378.aspx? – V4Vendetta

risposta

4

È possibile utilizzare PublisherIdentityPermissionAttribute.

Se si applica PublisherIdentityPermissionAttribute alla classe MyClass, solo le classi negli assembly firmati dal certificato mycert.cer possono utilizzare la classe. Hai bisogno di mettere SecurityAction.Demand

Tutti i chiamanti più elevata nello stack di chiamate sono tenuti ad avere ottenuto il permesso specificato dall'oggetto autorizzazione corrente

Usa come

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

Puoi anche usarlo a livello di assembly per proteggere l'intero assembly (tuttavia la sicurezza del livello di assieme non funzionerà da .Net 4.0 a meno che non si imposti <NetFx40_LegacySecurityPolicy enabled="true"/> nella configurazione).

+0

Si prega di non rispondere semplicemente con un link. Dare qualche spiegazione e un esempio di come usarlo per risolvere il problema dell'OP. – Rawling

+0

@Rawling Stavo modificando la mia risposta. –

Problemi correlati