In Silverlight 5 abbiamo la possibilità di eseguire le nostre applicazioni in modalità full trust anche all'interno del browser, con la precedente versione del plugin questa funzionalità era circoscritta al contesto Out Of Browser, le cosiddette applicazioni OOB.
Analogamente alle applicazioni OOB full trust, con questa modalità anche in esecuzione direttamente all'interno del browser le applicazioni vengono eseguite con elevati privilegi e possono interagire direttamente con il client come, ad esempio, accedere a tutto file system, invocare oggetti COM per l'accesso alle risorse del client stesso quali stampanti, scanner, ecc..
Per elevare il livello di attendibilità di una applicazione in esecuzione direttamente all'interno del browser è necessaria una specifica configurazione sia dell'applicazione che del client.
Con l'aiuto di Visual Studio possiamo spuntare il flag Require elevated trust when running in-browser tra le opzioni del progetto Silverlight.

Questa operazione aggiunge al progetto il file di configurazione InBrowserSettings.xml così strutturato:
<InBrowserSettings> <InBrowserSettings.SecuritySettings> <SecuritySettings ElevatedPermissions="Required" /> </InBrowserSettings.SecuritySettings> </InBrowserSettings>
Tale file viene elaborato in fase di compilazione ed il suo contenuto diventa parte integrante del file AppManifest.xaml che contiene la configurazione del progetto inpacchettato nel file XAP.
<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" EntryPointAssembly="SilverlightApplication6" EntryPointType="SilverlightApplication6.App" RuntimeVersion="5.0.61118.0"> <Deployment.InBrowserSettings> <InBrowserSettings> <InBrowserSettings.SecuritySettings> <SecuritySettings ElevatedPermissions="Required" /> </InBrowserSettings.SecuritySettings> </InBrowserSettings> </Deployment.InBrowserSettings> <Deployment.Parts> <AssemblyPart x:Name="SilverlightApplication6" Source="SilverlightApplication6.dll" /> </Deployment.Parts> </Deployment>
Il file XAP dell'applicazione deve essere firmato con un certificato rilasciato da una Trusted Certification Authority, anche in questo caso questa operazione è resa agevole da Visual Studio attraverso la maschera "Signing" delle proprietà del progetto Silverlight, come possiamo vedere nell'immagine.

Al fine di testing possiamo utilizzare un certificato auto-generato, che Visual Studio ci consente di creare con un solo click.
Il certificato deve essere installato tra i Trusted Publishers e nel caso sia auto-generato anche tra i Trusted Root Certification Authorities.
Infine, l'esecuzione in full trust deve essere esplicitamente autorizzata attraverso una chiave nel registro di sistema del client dell'utente:
- Chiave per sistemi 32-bit: HKEY_LOCAL_MACHINE\Software\Microsoft\Silverlight\
- Chiave per sistemi 64-bit: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Silverlight\
- Value name: AllowElevatedTrustAppsInBrowser
- Value type: DWORD
- Value data:
0x00000000 (Non attivo (0))
0x00000001 (Attivo (1))
Questa modifica può essere fatta direttamente con il tool \Windows\regedit.exe oppure attraverso specifiche Group Policy Settings definite dall'amministratore di sistema.
Per verificare che tutta la configurazione sia andata a buon fine è possibile utilizzare nella nostra applicazione la proprietà Application.Current.HasElevatedPermissions e visualizzare lo stato anche a video.

Per agevolare lo sviluppo, le applicazioni in esecuzione in localhost sono eseguite in full trust anche senza essere firmate e senza la chiave di registro.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Triggerare una pipeline su un altro repository di Azure DevOps
Gestione degli stili CSS con le regole @layer
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Il nuovo controllo Range di Blazor 9
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Migliorare la sicurezza dei prompt con Azure AI Studio
Gestire i dati con Azure Cosmos DB Data Explorer
Selettore CSS :has() e i suoi casi d'uso avanzati
La gestione della riconnessione al server di Blazor in .NET 9
Migliorare la scalabilità delle Azure Function con il Flex Consumption
I più letti di oggi
- Eseguire una chiamata AJAX per inviare dati al server in Angular 2
- Formati per l'impostazione del colore in CSS3
- la Call For Papert per #netconfit è aperta!invia la tua sessione da https://aspit.co/netconfit-20 puoi parlare di #net5, #aspnet5, #efcore5, #CSharp9 e tutto quello che ruota intorno a #dotnet.
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Impostare un riferimento ad una entity collegata tramite foreign key