rosalba

Il blog di Rosalba Fiore [Microsoft Certified Trainer]
posts - 398, comments - 583, trackbacks - 4693

My Links

News

Article Categories

Archives

Post Categories

Image Galleries

Al primo posto

Alcune delle Donne Attive

Alcuni dei ferri del mestiere di una MCT

Certificazioni Informatiche

elearning...funziona solo in alcuni casi!!!

Eventi

Gli MCT nel mondo

La mia zone

Link tecnici

Link un pò così

Panoramica altre Community

Post-it Articoli e post di MCT, MVP ect

Windows Vista

[70-340] Strong Name e GAC

Sospendendo un attimo la CAS, affrontiamo insieme il discorso dello strong name e dalla GAC.

Io ho un nome ed un cognome così anche i nostri assembly, anzi loro hanno molte più informazioni oltre il nome hanno:

  • la versione
  • la cultura
  • public key
  • digital signature

Tutto questo torna utile anche dal punto della sicurezza e capiremo dopo il perchè. Prima di tutto come gli diamo la public key e la digital signature? Semplice a dirsi sn.exe (strong name tool). Ed a farsi?

Ma ancor prima dove si trova:

C:\Programmi\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin

Passaggi:

  • generiamo l'snk: dal prompt dei comandi di VS.Net 2003 per creare un file .snk dobbiamo di nome "chiavi.snk"

scrivere sn -k chiavi.snk

viene generato e salvato nella directory corrente

  • associamolo alla nostra .dll: questo lo facciamo nell'Assembly.Info

[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile(@"..\..\chiave.snk")]

  • verifichiamo che abbiamo fatto bene:

           scrivere sn -v "C:\IlPercorso\Esempio.dll"

Se ci restituisce una cosa del genere utilità nome sicuro di Microsoft  vuol dire che abbiamo fatto bene, altrimenti :)

Ora ditemi voi una volta che ho assegnato tutte queste cose è più difficile utilizzare in modo improprio o "impersonare" il nostro assembly? Direi proprio di sì. 

I parametri del tool sn sono tutti qui

 

Vediamo ora qualcosa sulla GAC (Global Assembly Cache)...

Nel bene e nel male una delle cose che a seconda dei casi può essere considerata un beno o un male è l'AVANTI AVANTI ossia wizard etc. Certo automatizzare l'installazione delle nostre soluzioni è una gran bella comodità delle applicazioni create col .NET framework ma se il nostro scopo è quello di lavorare in sicurezza? Meglio utilizzare la GAC che sta lì proprio per questo. Se installiamo un assembly in esso più applicazioni possono utilizzarlo. Immaginiamo domani di fare una release di update? E' più comodo modificare UNA cosa in UN posto SOLO che cambiare lo stesso assembly in tutte le cartelle. Bello, bellissimo ma vediamo come si procede.

Allora i metodi sono:

  • automaticamente :
    • windows installer
    • chiamando direttamente le APIs
    • da linea di comando utilizzando un batch file ed la GacUtil
  • manualmente:
    • col .Net Framework Configuration tool  
    • da linea di comando
    • windows explorer 

Windows Explorer

Vista l'ora vediamo prima come si fa con la windows explorer: basta aprire una cartella o windows explorer  e nella barra dell'indirizzo    %windir%\assembly e grazie a SHFusion.dll vediamo tutti i nostri assembly che risiedono nella GAC.. ed ora? Un bel copia ed incolla del nostro assembly :)

 

Complichiamo un pò le cose ed utilizziamo il Configuration tool

Configuration Tool

E' lo stesso di cui parlavo ieri dunque ricordiamo Start-Pannello di Controllo- Strumenti d'amministrazione - .Net Configuration1.1

tasto destro su Cache Assembly ed aggiungiamo il nostro assembly

Per gli altri magari domani... continuo a studiare ma non penso di riuscire a postare prima delle 24.. dunque a domani :)

Ps. Maggiori informazioni sull'esame 70-340: Implementing Security for Applications with Microsoft Visual C# .NET qui

Print | posted on mercoledì 9 maggio 2007 01:11 | Filed Under [ C# Articoli Tecnici ]

Feedback

Gravatar

# re: [70-340] Strong Name e GAC

Che tristezza questi post... davvero... .NET for Dummies :)
09/05/2007 01:51 | Shocked
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET