Procedura: Impostare la modalità di sicurezzaHow to: Set the Security Mode

Per la sicurezza Windows Communication Foundation (WCF) sono disponibili tre modalità di sicurezza comuni che si trovano nella maggior parte delle associazioni predefinite: trasporto, messaggio e "trasporto con credenziali messaggio".Windows Communication Foundation (WCF) security has three common security modes that are found on most predefined bindings: transport, message, and "transport with message credential." Esistono inoltre due modalità aggiuntive disponibili soltanto in due associazioni specifiche: la modalità "Solo credenziale a livello di trasporto" ("TransportCredentialOnly") dell'associazione BasicHttpBinding e la modalità "Entrambi" ("Both") dell'associazione NetMsmqBinding.Two additional modes are specific to two bindings: the "transport-credential only" mode found on the BasicHttpBinding, and the "Both" mode, found on the NetMsmqBinding. Tuttavia, questo argomento descrive solo le tre modalità di sicurezza generali, ovvero: Transport, Message e TransportWithMessageCredential.However, this topic concentrates on the three common security modes: Transport, Message, and TransportWithMessageCredential.

Si noti che non tutte le associazioni predefinite supportano queste modalità.Note that not every predefined binding supports all of these modes. Questo argomento descrive come utilizzare le classi WSHttpBinding e NetTcpBinding per impostare la modalità, sia a livello di programmazione sia in configurazione.This topic sets the mode with the WSHttpBinding and NetTcpBinding classes and demonstrates how to set the mode both programmatically and through configuration.

Per altre informazioni, vedere sicurezza WCF, vedere Panoramica della sicurezza, protezione dei servizie protezione di servizi e client.For more information, see WCF security, see Security Overview, Securing Services, and Securing Services and Clients. Per ulteriori informazioni sulla modalità trasporto e il messaggio, vedere sicurezza del trasporto e sicurezza dei messaggi.For more information about transport mode and message, see Transport Security and Message Security.

Per impostare la modalità di sicurezza in codiceTo set the security mode in code

  1. Creare un'istanza della classe di associazione in uso.Create an instance of the binding class that you are using. Per un elenco di associazioni predefinite, vedere associazioni fornite dal sistema.For a list of predefined bindings, see System-Provided Bindings. In questo esempio viene creata un'istanza della classe WSHttpBindingThis example creates an instance of the WSHttpBinding class.

  2. Impostare la proprietà Mode dell'oggetto restituito dalla proprietà Security.Set the Mode property of the object returned by the Security property.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Transport;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Transport
    

    In alternativa, impostare la modalità su "Message", come mostrato nel codice seguente.Alternatively, set the mode to message, as shown in the following code.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Message;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Message
    

    In alternativa, impostare la modalità su "TransportWithMessageCredential", come mostrato nel codice seguente.Or set the mode to transport with message credentials, as shown in the following code.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.TransportWithMessageCredential;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.TransportWithMessageCredential
    
  3. La modalità può anche essere impostata nel costruttore dell'associazione, come mostrato nel codice seguente.You can also set the mode in the constructor of the binding, as shown in the following code.

    WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);
    
    Dim b As New WSHttpBinding(SecurityMode.Message)
    

Impostazione della proprietà ClientCredentialTypeSetting the ClientCredentialType Property

L'impostazione della modalità su uno dei tre valori determina il valore su cui impostare la proprietà che specifica il tipo di credenziale client, ovvero ClientCredentialType.Setting the mode to one of the three values determines how you set the ClientCredentialType property. Ad esempio, se si utilizza la classe WSHttpBinding e si imposta la modalità su Transport, occorre impostare la proprietà ClientCredentialType della classe HttpTransportSecurity su un valore appropriato.For example, using the WSHttpBinding class, setting the mode to Transport means you must set the ClientCredentialType property of the HttpTransportSecurity class to an appropriate value.

Per impostare la proprietà ClientCredentialType quando si imposta la modalità "Transport"To set the ClientCredentialType property for Transport mode

  1. Creare un'istanza dell'associazione.Create an instance of the binding.

  2. Impostare la proprietà Mode su Transport.Set the Mode property to Transport.

  3. Impostare la proprietà ClientCredential su un valore appropriato.Set the ClientCredential property to an appropriate value. Nell'esempio di codice seguente la proprietà viene impostata su Windows.The following code sets the property to Windows.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Transport;
    b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Transport
    b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows
    

Per impostare la proprietà ClientCredentialType quando si imposta la modalità "Message"To set the ClientCredentialType property for Message mode

  1. Creare un'istanza dell'associazione.Create an instance of the binding.

  2. Impostare la proprietà Mode su Message.Set the Mode property to Message.

  3. Impostare la proprietà ClientCredential su un valore appropriato.Set the ClientCredential property to an appropriate value. Nell'esempio di codice seguente la proprietà viene impostata su Certificate.The following code sets the property to Certificate.

    WSHttpBinding b = new WSHttpBinding();
    b.Security.Mode = SecurityMode.Message;
    b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
    
    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Message
    b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate
    

Per impostare la modalità e la proprietà ClientCredentialType in configurazioneTo set the Mode and ClientCredentialType property in configuration

  1. Aggiungere un elemento di associazione appropriato all' <elemento bindings > elemento del file di configurazione.Add an appropriate binding element to the <bindings> element of the configuration file. Nell'esempio seguente viene aggiunto un <elemento > WSHttpBinding .The following example adds a <wsHttpBinding> element.

  2. Aggiungere un <binding> elemento e impostare il name relativo attributo su un valore appropriato.Add a <binding> element and set its name attribute to an appropriate value.

  3. Aggiungere un <security> elemento e impostare il mode attributo Message, Transport, o TransportWithMessageCredential.Add a <security> element and set the mode attribute to Message, Transport, or TransportWithMessageCredential.

  4. Se si imposta la modalità su Transport, aggiungere un elemento <transport> e impostare l'attributo clientCredential su un valore appropriato.If the mode is set to Transport, add a <transport> element and set the clientCredential attribute to an appropriate value.

    Nell'esempio seguente, la modalità viene impostata su "Transport", quindi l'attributo clientCredentialType dell'elemento <transport> viene impostato su "Windows".The following example sets the mode to "Transport", and then sets the clientCredentialType attribute of the <transport> element to "Windows".

    <wsHttpBinding>
    <binding name="TransportSecurity">
        <security mode="Transport" >
           <transport clientCredentialType = "Windows" />
        </security>
    </binding>
    </wsHttpBinding >
    

    In alternativa, impostare la security mode su "Message" seguita da un elemento <"message">.Alternatively, set the security mode to "Message", followed by a <"message"> element. In questo esempio l'attributo clientCredentialType viene impostato su "Certificate".This example sets the clientCredentialType to "Certificate".

    <wsHttpBinding>
    <binding name="MessageSecurity">
        <security mode="Message" >
           <message clientCredentialType = "Certificate" />
        </security>
    </binding>
    </wsHttpBinding >
    

    L'utilizzo del valore TransportWithMessageCredential rappresenta un caso speciale e viene spiegato di seguito.Using the TransportWithMessageCredential value is a special case, and is explained below.

Utilizzo della modalità TransportWithMessageCredentialUsing TransportWithMessageCredential

Quando si imposta la modalità di sicurezza su TransportWithMessageCredential, il trasporto determina il meccanismo di sicurezza a livello di trasporto effettivamente utilizzato.When setting the security mode to TransportWithMessageCredential, the transport determines the actual mechanism that provides the transport-level security. Ad esempio, il protocollo di trasporto HTTP utilizza il meccanismo Secure Sockets Layer (SSL) su HTTP (HTTPS).For example, the HTTP protocol uses Secure Sockets Layer (SSL) over HTTP (HTTPS). Pertanto, l'impostazione della proprietà ClientCredentialType di qualsiasi oggetto di sicurezza a livello di trasporto (ad esempio HttpTransportSecurity) viene ignorata.Therefore, setting the ClientCredentialType property of any transport security object (such as HttpTransportSecurity) is ignored. In altre parole, è possibile impostare solo la proprietà ClientCredentialType dell'oggetto di sicurezza a livello di messaggio (per l'associazione WSHttpBinding, tale proprietà può essere impostata solo per l'oggetto NonDualMessageSecurityOverHttp).In other words, you can only set the ClientCredentialType of the message security object (for the WSHttpBinding binding, the NonDualMessageSecurityOverHttp object).

Per altre informazioni, vedere Procedura: Utilizzare la sicurezza del trasporto ele credenziali del messaggio.For more information, see How to: Use Transport Security and Message Credentials.

Vedere ancheSee also