Panoramica sulla protezione del trasporto
I meccanismi di protezione del trasporto di Windows Communication Foundation (WCF) dipendono dall'associazione e dal trasporto utilizzato. Ad esempio, quando si utilizza la classe WSHttpBinding, il trasporto è HTTP e il meccanismo principale per la protezione del trasporto è SSL (Secure Sockets Layer) su HTTP, comunemente noto come HTTP. In questo argomento vengono illustrati i principali meccanismi di protezione del trasporto utilizzati nelle associazioni fornite dal sistema WCF.
Nota
Quando la sicurezza SSL viene usata con .NET Framework 3.5 e versioni successive un client WCF utilizza i certificati intermedi nel proprio archivio certificati e i certificati ricevuti durante la negoziazione SSL per eseguire la convalida della catena di certificati sul certificato del servizio. ..NET Framework 3.0 utilizza solo i certificati intermedi installati nell'archivio certificati locale.
BasicHttpBinding
Per impostazione predefinita, la classe BasicHttpBinding non fornisce protezione. Questa associazione è progettata per essere interoperabile con i provider di servizi Web che non implementano funzionalità di protezione. La protezione può essere tuttavia attivata impostando la proprietà Mode su qualsiasi valore diverso da None. Per abilitare la protezione del trasporto, impostare tale proprietà su Transport.
Interazione con IIS
La classe BasicHttpBinding viene utilizzata principalmente per interagire con i servizi Web esistenti, molti dei quali sono ospitati da Internet Information Services (IIS). Di conseguenza, la protezione del trasporto per questa associazione è progettata per interagire senza difficoltà con i siti IIS. Questo risultato si ottiene impostando la modalità di protezione su Transport e quindi specificando il tipo di credenziale client. I valori relativi al tipo di credenziale corrispondono ai meccanismi di protezione directory ISS. Nel codice seguente viene illustrata l'impostazione della modalità e del tipo di credenziale su Windows. È possibile utilizzare questa configurazione quando il client e il server si trovano nello stesso dominio Windows.
oppure in configurazione:
<bindings>
<basicHttpBinding>
<binding name="SecurityByTransport">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
</bindings>
Nelle sezioni seguenti vengono illustrati altri tipi di credenziali client.
Di base
Questo tipo corrisponde al metodo di autenticazione di base di IIS. Quando si utilizza questa modalità, il server IIS deve essere configurato con gli account utente di Windows e le autorizzazioni del file system NTFS appropriate. Per ulteriori informazioni IIS 6.0, vedere Abilitazione dell'autenticazione di base e configurazione del nome dell'area di autenticazione (la pagina potrebbe essere in inglese). Per ulteriori informazioni su IIS 7.0, vedere IIS 7.0 Beta: configurazione dell'autenticazione di base (la pagina potrebbe essere in inglese).
Certificato
In IIS è disponibile un'opzione affinché i client debbano eseguire l'accesso con un certificato. Questa funzionalità consente inoltre di eseguire il mapping di un certificato client a un account di Windows. Per ulteriori informazioni IIS 6.0, vedere Abilitazione dei certificati in IIS 6.0. (la pagina potrebbe essere in inglese). Per ulteriori informazioni su IIS 7.0, vedere IIS 7.0 Beta: configurazione dei certificati server in IIS 7.0 (la pagina potrebbe essere in inglese).
Digest
L'autenticazione digest è simile all'autenticazione di base, ma offre il vantaggio di inviare le credenziali come un hash, anziché in testo non crittografato. Per ulteriori informazioni su IIS 6.0, vedere Autenticazione digest in IIS 6.0 (la pagina potrebbe essere in inglese). Per ulteriori informazioni su IIS 7.0, vedere IIS 7.0 Beta: configurazione dell'autenticazione digest (la pagina potrebbe essere in inglese).
Windows
Questo tipo corrisponde al metodo di autenticazione integrata di Windows di IIS. In caso di impostazione su questo valore, si prevede inoltre che il server sia in un dominio Windows che utilizza il protocollo Kerberos come controller di dominio. Se il server non è in un dominio con supporto Kerberos o se il sistema Kerberos ha esito negativo, è possibile utilizzare il valore NTLM (NT LAN Manager) descritto nella sezione successiva. Per ulteriori informazioni IIS 6.0, vedere Autenticazione integrata di Windows n IIS 6.0 (la pagina potrebbe essere in inglese). Per ulteriori informazioni su IIS 7.0, vedere IIS 7.0 Beta: configurazione dei certificati server in IIS 7.0 (la pagina potrebbe essere in inglese).
NTLM
Consente al server di utilizzare NTLM per l'autenticazione se il protocollo Kerberos ha esito negativo. Per ulteriori informazioni sulla configurazione di IIS in IIS 6.0, vedere Esecuzione forzata dell'autenticazione NTLM (la pagina potrebbe essere in inglese). Per IIS 7.0, l'autenticazione di Windows include l'autenticazione NTLM. Per ulteriori informazioni, vedere IIS 7.0 Beta: configurazione dei certificati server in IIS 7.0 (la pagina potrebbe essere in inglese).
WsHttpBinding
La classe WSHttpBinding è progettata per essere interoperabile con i servizi che implementano le specifiche WS - *. La protezione basata sul trasporto di questa associazione è SSL (Secure Sockets Layer) su HTTP, ovvero HTTPS. Per creare un'applicazione WCF che utilizza SSL, utilizzare IIS per ospitarla. In alternativa, se si sta creando un'applicazione indipendente, utilizzare lo strumento HttpCfg.exe per associare un certificato X.509 a una porta specifica in un computer. Il numero della porta viene specificato all'interno dell'applicazione WCF come indirizzo dell'endpoint. Quando si utilizza la modalità di trasporto, l'indirizzo dell'endpoint deve includere il protocollo HTTPS; in caso contrario verrà generata un'eccezione in fase di esecuzione. Per ulteriori informazioni, vedere Protezione del trasporto HTTP.
L'autenticazione client, impostare la proprietà ClientCredentialType della classe HttpTransportSecurity su uno dei valori di enumerazione di HttpClientCredentialType. I valori di enumerazione corrispondono ai tipi di credenziali client per BasicHttpBinding e sono progettati per essere ospitati nei servizi IIS.
Nell'esempio seguente viene illustrata l'associazione utilizzata con un tipo di credenziale client di Windows.
WSDualHttpBinding
Questa associazione fornisce protezione solo a livello di messaggio, non a livello di trasporto.
NetTcpBinding
La classe NetTcpBinding utilizza il protocollo TCP per il trasporto dei messaggi. La protezione per la modalità di trasporto viene fornita implementando il protocollo TLS (Transport Layer Security) su TCP. L'implementazione di TLS viene fornita dal sistema operativo.
È inoltre possibile specificare il tipo di credenziale client impostando la proprietà ClientCredentialType della classe TcpTransportSecurity su uno dei valori di TcpClientCredentialType, come illustrato nel codice seguente.
Lato client
Sul client, è necessario specificare un certificato utilizzando il metodo SetCertificate della classe X509CertificateInitiatorClientCredential.
Nota
Se si sutilizza la protezione di Windows, non è necessario un certificato.
Nel codice seguente viene utilizzata l'identificazione digitale del certificato che lo identifica in modo univoco. Per ulteriori informazioni sui certificati, vedere Utilizzo dei certificati.
In alternativa, specificare il certificato nella configurazione del client utilizzando un clientCredentials element nella sezione dei comportamenti.
<behaviors>
<behavior>
<clientCredentials>
<clientCertificate findValue= "101010101010101010101010101010000000000"
storeLocation="LocalMachine" storeName="My"
X509FindType="FindByThumbPrint"/>
</clientCertificate>
</clientCredentials>
</behavior>
</behaviors>
NetNamedPipeBinding
La classe NetNamedPipeBinding è progettata per consentire una comunicazione efficiente intra-computer, ovvero per i processi in esecuzione sullo stesso computer, sebbene sia possibile creare canali named pipe tra due computer sulla stessa rete. Questa associazione fornisce protezione solo a livello di trasporto. Quando si creano applicazioni utilizzando questa associazione, gli indirizzi di endpoint devono includere "net.pipe" come protocollo.
WSFederationHttpBinding
Quando si utilizza la protezione del trasporto, questa associazione utilizza SSL su HTTP, noto come HTTPS, con un token emesso (TransportWithMessageCredential). Per ulteriori informazioni sulle applicazioni federate, vedere Federazione e token emessi.
NetPeerTcpBinding
La classe NetPeerTcpBinding costituisce un trasporto protetto progettato per consentire una comunicazione efficiente utilizzando la funzionalità di rete peer-to-peer. Come indicato dal nome della classe e dell'associazione, il protocollo è TCP. Quando la modalità di protezione è impostata sul trasporto, l'associazione implementa TLS su TCP. Per ulteriori informazioni sulla funzionalità peer-to-peer, vedere Rete peer-to-peer.
MsmqIntegrationBinding e NetMsmqBinding
Per informazioni dettagliate sulla protezione del trasporto con accodamento dei messaggi (precedentemente chiamato MSMQ), vedere Protezione dei messaggi mediante protezione del trasporto.