Creare una "full trust" xbap application

Come chi programma in WPF ben sa, una applicazione WPF browser, meglio nota come XBAP application, gira all’interno del browser in un ambiente partial trust, oppure in una sandbox di sicurezza, come meglio si preferisce, per evitare appunto che il codice di una tale applicazione possa accedere a informazioni confidenziali oppure effettuare azioni non autorizzate. In particolari scenari, tuttavia, ad esempio in applicazioni Intranet, può nascere l’esigenza di dotare tali applicazioni di un maggior numero di permessi, oppure addirittura farle girare in ambiente full trust.

Bene, visto che per default una XBAP application viene eseguita in modalità partial trust, quali sono i passaggi necessari per farla funzionare invece in un ambiente full trust ?. Questo è il motivo di questo post. Di seguito elenco i passaggi che ho dovuto effettuare per raggiungere tale obiettivo, anche se alcuni sono un pò contorti e mi fanno dubitare di aver intrapreso la strada migliore, ma alla fine comunque il tutto ha funzionato:

  • Occorre far si che il processo che ospita la XBAP application non venga eseguito con un process token povero di privilegi. Per far questo è necessario intervenire sul Registry (non sono però certo che non esistano metodi più comodi).  Occorre posizionarsi sulla chiave:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\Hosting

e creare un valore DWORD denominato RunUnrestricted ed assegnargli il valore 1.

  • Nella scheda Security, accessibile dalle proprietà del progetto, occorre scegliere come zona il valore “Custom” al posto di “Internet”. Lasciare il valore di default “This is a partial trust application” e non spuntare “This is a full trust application” come invece la logica vorrebbe. Se si sceglie “full trust” senza cambiare la zona (lasciando il valore di default) il meccanismo non funzionerà. Dopo aver fatto questa modifica, riaprendo la scheda Security, si noterà come sia spuntato il valore “full trust” e la zona sia impostata a “Custom” e non modificabile.
  • Nel file app.manifest dell’applicazione occorre aggiungere l’attributo Unrestricted=”true”
  • Se si vuol lanciare la propria applicazione mediante un url http, occorre firmare il manifest con un certificato digitale X.509. Quando creiamo la nostra applicazione XBAP Visual Studio genera un file con estensione “pfx”. Questo file rappresenta un certificato digitale temporaneo da usare a scopo di test. Occorrerà solo registrare tale certificato in Internet Exporer, scegliendo da menù Tools l’opzione “Options“, la scheda “Content” ed il pulsante “Certificates“. A questo punto click sul pulsante “Import” e partirà il wizard di importazione del certificato, dove attraverso vari passaggi il certificato di test sarà registrato (occorre scegliere come store  “Trusted root Certification Authorities“). E’ comunque possibile generare un certificato di test direttamente da Visual Studio, scegliendo la scheda “Signing” dalle proprietà del progetto e successivamente cliccando il pulsante “Create Test Certificate“. A questo punto partirà un wizard che permetterà la creazione e la esportazione del certificato in un file “pfx“, onde consentire la successiva importazione in Internet Explorer.

A questo punto eseguendo l’applicazione via web essa funzionerà con tutti i permessi assegnati (full trust).

Mole, visualizer integrato per visual studio

Segnalo un gran bel Visualizer per Visual Studio 2005/2008. Trattasi di Mole v.4.2, un visualizer in grado di funzionare con diversi oggetti di diverse tipologie di progetto, che comprendono WinForms, WPF, WCF, WF, ASP.NET, XBAP. Io lo trovo molto utile soprattutto per progetti WCF, WPF, dove gli oggetti con cui si ha a che fare sono abbastanza complessi e strutturati. Uno strumento del genere, molto ben fatto e performante, può far risparmiare diversi “mal di testa” quando si effettua il debugging di progetti di questo tipo.

Download