Sicurezza di IIS e .NET Framework

Windows Server AppFabric utilizza le affidabili funzionalità di sicurezza di IIS e .NET Framework versione 4 per proteggere i servizi .NET Framework 4 ospitati in Servizio Attivazione processo Windows. Per aiutare a capire in che modo configurare correttamente la sicurezza client-server in AppFabric, è importante comprendere le opzioni di sicurezza disponibili in IIS e .NET Framework.

In generale, sono disponibili numerosi livelli di opzioni di sicurezza e sarebbe opportuno utilizzare quelli più appropriati alla propria distribuzione. Ogni livello di sicurezza consente di proteggere risorse specifiche. Ad esempio, il tooling in IIS generalmente consente di proteggere artefatti IIS quali siti e applicazioni, mentre le impostazioni di sicurezza .NET Framework 4 possono essere applicate a concetti di servizio WCF/WF quali servizi, endpoint e operazioni.

Per ulteriori informazioni sulla sicurezza, vedere le sezioni relative alla sicurezza di Windows Communication Foundation (https://go.microsoft.com/fwlink/?LinkId=183157) e sicurezza IIS (https://go.microsoft.com/fwlink/?LinkId=183159).

Sicurezza IIS e AppFabric

IIS influisce sulla sicurezza di un'applicazione dal lato client chiamante anche quando il servizio .NET Framework accede agli archivi dei dati di monitoraggio e salvataggio permanente. IIS influisce sulla sicurezza di AppFabric nelle seguenti aree:

  • IIS_IUSRS. Il gruppo di protezione di Windows utilizzato per gestire l'accesso runtime a file e cartelle nell'installazione IIS predefinita.

    securitySicurezzaNota
    Non confondere il gruppo di protezione di Windows IIS_IUSRS con il nome di accesso a SQL Server IIS_IUSRS. Sono entità correlate ma separate.

  • Identità del pool di applicazioni. IIS inserisce in modo dinamico tutte le identità del pool di applicazioni nel gruppo IIS_IUSRS in fase di esecuzione. A questo gruppo di sicurezza viene concessa l'autorizzazione ad accedere agli archivi dei dati necessari, in particolare all'archivio dei dati di salvataggio permanente. Per ulteriori informazioni, vedere Protezione di SQL Server.

Sicurezza .NET Framework per AppFabric

Quando si parla di sicurezza per i servizi .NET Framework configurati in AppFabric, in realtà si fa riferimento a WCF. WCF definisce il protocollo di trasporto utilizzato per comunicare tra un client WCF e un servizio .NET Framework (WCF o WF). È la parte di .NET Framework che fornisce un modello di programmazione unificato per creare rapidamente applicazioni orientate ai servizi che comunicano attraverso il Web e l'azienda. WCF non solo si integra con le infrastrutture di sicurezza esistenti, ma estende la sicurezza distribuita oltre i domini solo Windows utilizzando messaggi SOAP di sicurezza. Per ulteriori informazioni, vedere la sezione relativa alla sicurezza di Windows Communication Foundation (https://go.microsoft.com/fwlink/?LinkId=183157) e all'architettura di sicurezza (https://go.microsoft.com/fwlink/?LinkId=183160).

Sicurezza combinata di IIS e .NET Framework

Ai fini dell'integrità di un'applicazione, è essenziale assicurare che un messaggio inviato a un servizio non venga visualizzato o modificato durante il processo di trasferimento. A tale scopo è possibile utilizzare la crittografia e la firma. Il trasferimento dei messaggi è completamente sicuro solo se è anche possibile convalidare o autenticare, con assoluta certezza, l'identità dell'applicazione client chiamante. Con AppFabric è importante comprendere in che modo IIS e WCF lavorano insieme per assicurare quanto sopra.

Per ulteriori informazioni sui modelli e le procedure relative alla sicurezza dei servizi Web, vedere la sezione relativa ai modelli e alle procedure: guida al miglioramento di Web Services Security (https://go.microsoft.com/fwlink/?LinkId=183161).

Autenticazione IIS in AppFabric

I meccanismi di sicurezza del trasporto di WCF in Windows dipendono dal binding e dal successivo protocollo di trasporto utilizzato. Ad esempio, quando si utilizza la classe WSHttpBinding, il protocollo di trasporto è HTTP e il canale preferenziale per proteggere il trasporto è SSL (Secure Sockets Layer) su HTTP, comunemente conosciuto come HTTPS. L'algoritmo di sicurezza dei messaggi utilizza la specifica WS-Security per proteggere i messaggi a livello di messaggio. Comporta miglioramenti della messaggistica SOAP al fine di garantire riservatezza, integrità e autenticazione a livello dei messaggi SOAP (anziché a livello di trasporto).

Modalità di servizio ospitate

I servizi ospitati possono essere eseguiti in due modalità: Modalità Trasporti misti o modalità Compatibilità ASP.NET. La modalità è controllata mediante il flag di configurazione a livello dell'applicazione aspNetCompatibilityEnabled. È inoltre possibile ottenere questo flag in fase di esecuzione dalla proprietà statica ServiceHostingEnvironment.AspNetCompatibilityEnabled. Il flag aspNetCompatibilityEnabled è false per impostazione predefinita, quindi i servizi vengono eseguiti in modalità Trasporti misti a meno che tale impostazione non venga esplicitamente modificata.

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false"/>
</system.serviceModel>

Modalità Trasporti misti

In modalità Trasporti misti, il modulo HTTP intercetta la richiesta nella prima fase della pipeline: BeginRequest. Quando si riceve una richiesta, il modulo HTTP imposta HttpContext.Current su Null e ripristina la rappresentazione se il thread è rappresentato. Poiché la richiesta del client viene intercettata in questa fase precoce, altre funzionalità HTTP vengono automaticamente disabilitate. Per tale ragione, quando vengono eseguiti in modalità Trasporti misti, i servizi non hanno accesso alle seguenti funzionalità HTTP specifiche di ASP.NET:

  • HttpContext.Current. In questa modalità è sempre impostata su Null. WCF fornisce una funzionalità corrispettiva: OperationContext.Current.

  • Autorizzazione di file/URL. Questa funzionalità di autorizzazione a livello di trasporto viene normalmente abilitata mediante la sezione <system.web/authorization> nel file Web.config per i sevizi ASMX. L'autorizzazione di trasporto è disabilitata in modalità mista in WCF. Per l'autorizzazione file/URL è solamente possibile utilizzare l'autorizzazione a livello di messaggi implementata in WCF.

  • Rappresentazione. La rappresentazione consente al servizio di agire come client durante l'esecuzione di un'azione sul server. La funzionalità di rappresentazione ASP.NET normalmente viene abilitata mediante la sezione <system.web/identity> nel file Web.config per i servizi ASMX. Non è disponibile nel layer di trasporto WCF in modalità mista.

  • Stato sessione. Lo stato della sessione ASP.NET non è supportato in modalità mista. WCF dispone della propria implementazione di sessione affidabile che fornisce una gestione flessibile dello stato della sessione. Il problema più grande per WCF è che lo stato della sessione non sopravvive al riciclo dell'applicazione e non funziona nei Web garden o Web farm. La ragione risiede nel fatto che non esiste alcun meccanismo per condividere lo stato tra le applicazioni o i processi, a differenza del Servizio stato di ASP.NET (disabilitato).

  • Altre funzionalità HTTP. Altre funzionalità HTTP dipendono da HttpContext.Current e non sono supportate nella modalità mista. Ad esempio, non è possibile prevedere di ricevere il risultato corretto da ConfigurationManager.AppSettings. La funzionalità di globalizzazione tramite <system.web/globalization> non è disponibile.

L'autenticazione IIS viene ignorata nelle chiamate WCF nei servizi .NET Framework durante l'esecuzione in modalità Trasporti misti. Questo rende la sicurezza di WCF il canale preferenziale per autenticare e proteggere il trasferimento dei messaggi tra il client WCF e il servizio .NET Framework.  In modalità Trasporti misti, tutti i trasporti vengono trattati allo stesso modo. Un servizio può avere più endpoint WCF e questi ultimi possono mettersi in ascolto sullo stesso protocollo o su uno diverso, ad esempio HTTP, net.tcp, net.pipe, net.msmq, ecc.  Tuttavia, i servizi ospitati in esecuzione in modalità Trasporti misti si basano ancora su ASP.NET e IIS per fornire l'ambiente di hosting, la configurazione dell'applicazione e la distribuzione.

Modalità Compatibilità ASP.NET

Per utilizzare l'autenticazione IIS in un'applicazione ospitata da WAS, compresa naturalmente qualsiasi applicazione ospitata in AppFabric, è necessario utilizzare la modalità Compatibilità di ASP e la protezione del trasporto WCF.  È possibile sfruttare le funzionalità di sicurezza IIS riportate di seguito solo utilizzando la modalità Compatibilità di ASP:

  • Controllare quali utenti Windows e i membri di quale gruppo Windows sono autorizzati a collegarsi ai servizi di hosting di un sito o di un'applicazione mediante Gestione IIS.

  • Convertire un sito Web in una directory virtuale IIS, quindi definire le impostazioni di sicurezza nel percorso fisico della directory virtuale in due modi. L'autenticazione pass-through indica a IIS di passare al file system Windows le credenziali dell'utente autenticato quando accede al percorso fisico della directory virtuale.  In alternativa, è possibile designare un'identità utente specifica per il processo che ospita i servizi .NET Framework per accedere a tutto il contenuto del percorso fisico specificato. 

  • Selezionare il metodo di autenticazione IIS appropriato (Anonimo, Di base, Moduli, Digest, Autenticazione di Windows o Rappresentazione moduli di ASP.NET) per controllare la sicurezza per chiamate in arrivo nei servizi associati al sito Web.

È possibile sfruttare le funzionalità di sicurezza IIS riportate di seguito indipendentemente dall'abilitazione della modalità Compatibilità di ASP:

  • Configurare le impostazioni SSL per utilizzare la crittografia a 64 o 128 bit e configurare il modo in cui gestire i certificati client per le richieste in arrivo.

  • Creare regole di autorizzazione per concedere o negare l'accesso utente a siti Web o applicazioni.

  • Utilizzare le funzionalità di registrazione IIS per creare un registro di controllo della protezione delle richieste in arrivo.

  • Modificare le stringhe di connessione adiacenti nei database di monitoraggio e salvataggio permanente.

  • Gestire le impostazioni per i client che effettuano chiamate ai servizi.

  • Configurare le autorizzazioni di esecuzione a livello di file (controllo completo, lettura ed esecuzione, elenco dei contenuti del file, scrittura e così via) nel sito Web contenitore o le relative applicazioni di servizio contenute.

  • Modificare l'identità NetworkService predefinita di un pool di applicazioni personalizzato in un'identità specifica in cui può essere eseguita.  Se si utilizza la sicurezza integrata su SQL Server, questa è l'identità utilizzata per effettuare chiamate in SQL Server. 

Per ulteriori informazioni, vedere la pagina relativa ai servizi WCF e ASP.NET (https://go.microsoft.com/fwlink/?LinkId=183163).

Istruzioni relative all'autenticazione

Per abilitare l'autenticazione IIS per un'applicazione:

  • Utilizzare la modalità Compatibilità ASP

  • Utilizzare un binding WCF basato su HTTP che supporti la modalità di protezione del trasporto (basicHttpBinding, wsHttpBinding e wsFederationHttpBinding)

Una volta soddisfatti questi requisiti, configurare IIS e il servizio .NET Framework ospitato per utilizzare le impostazioni di sicurezza IIS e WCF compatibili.  Configurare le varie impostazioni di sicurezza dell'applicazione per la corrispondenza della sicurezza e binding di tutti i relativi servizi.  Se si specifica uno schema diverso, si verificherà un errore di attivazione del servizio WCF. Le modalità di sicurezza in WCF (in questo caso, modalità di protezione del trasporto) sono specificate negli elementi binding.  Devono supportare l'autenticazione in modo da garantire che le impostazioni di sicurezza WCF scelte siano compatibili con le impostazioni IIS.  Il trasporto è associato alla modalità di autenticazione WCF configurata per il binding. Il servizio determina la modalità di autenticazione mediante la relativa configurazione di binding cui il client WCF deve essere conforme nel relativo file di configurazione. Il client deve essere configurato per fornire il modulo corretto di credenziali client per supportare lo schema di autenticazione fornito dal servizio.  Poiché AppFabric non fornisce un elemento dell'interfaccia utente per apportare questo tipo di modifiche sarà necessario provvedere manualmente nel file Web.config applicabile.

securitySicurezzaNota
wsDualHttpBinding supporta solo la sicurezza basata su messaggi, pertanto non sarà possibile utilizzarlo se si implementa l'autenticazione ISS nei propri servizi.

  2011-12-05