Procedimiento para establecer el modo de seguridadHow to: Set the Security Mode

La seguridad de Windows Communication Foundation (WCF) tiene tres modos de seguridad comunes que se encuentran en la mayoría de los enlaces predefinidos: transporte, mensaje y "transporte con credenciales de mensaje".Windows Communication Foundation (WCF) security has three common security modes that are found on most predefined bindings: transport, message, and "transport with message credential." Dos modos adicionales son específicos para dos enlaces: el modo “solo credencial de transporte” encontrado en el BasicHttpBindingy el modo “Ambos” encontrado en el 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. Sin embargo, este tema se concentra en los tres modos de seguridad comunes: Transport, Messagey TransportWithMessageCredential.However, this topic concentrates on the three common security modes: Transport, Message, and TransportWithMessageCredential.

Tenga en cuenta que no todos los enlaces predefinidos admiten todos estos modos.Note that not every predefined binding supports all of these modes. Este tema establece el modo con las clases WSHttpBinding y NetTcpBinding y muestra cómo establecer el modo mediante programación y configuración.This topic sets the mode with the WSHttpBinding and NetTcpBinding classes and demonstrates how to set the mode both programmatically and through configuration.

Para obtener más información, vea seguridad de WCF, vea información general sobre seguridad, proteger serviciosy proteger servicios y clientes.For more information, see WCF security, see Security Overview, Securing Services, and Securing Services and Clients. Para obtener más información sobre el modo de transporte y el mensaje, vea seguridad de transporte y seguridad de mensajes.For more information about transport mode and message, see Transport Security and Message Security.

Para establecer el modo de seguridad en códigoTo set the security mode in code

  1. Cree una instancia de la clase del enlace que está utilizando.Create an instance of the binding class that you are using. Para obtener una lista de enlaces predefinidos, vea enlaces proporcionados por el sistema.For a list of predefined bindings, see System-Provided Bindings. En el siguiente ejemplo se crea una instancia de la clase WSHttpBinding.This example creates an instance of the WSHttpBinding class.

  2. Establezca la propiedad Mode del objeto devuelto por la propiedad 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
    

    De manera alternativa, establezca el modo en mensaje, como se muestra en el código siguiente.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
    

    O establezca el modo en transporte con credenciales de mensaje, como se muestra en el código siguiente.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. También puede establecer el modo en el constructor del enlace, como se muestra en el código siguiente.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)
    

Establecimiento de la propiedad la propiedad ClientCredentialTypeSetting the ClientCredentialType Property

El establecimiento del modo en uno de los tres valores determina cómo establece la propiedad ClientCredentialType.Setting the mode to one of the three values determines how you set the ClientCredentialType property. Por ejemplo, el uso de la clase WSHttpBinding, estableciendo el modo en Transport implica que debe establecer la propiedad ClientCredentialType de la clase HttpTransportSecurity en un valor adecuado.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.

Para establecer la propiedad ClientCredentialType para el modo de transporteTo set the ClientCredentialType property for Transport mode

  1. Cree una instancia del enlace.Create an instance of the binding.

  2. Establezca la propiedad Mode en Transport.Set the Mode property to Transport.

  3. Establezca la propiedad ClientCredential en un valor apropiado.Set the ClientCredential property to an appropriate value. El siguiente código establece la propiedad en 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
    

Para establecer la propiedad ClientCredentialType para el modo de mensajeTo set the ClientCredentialType property for Message mode

  1. Cree una instancia del enlace.Create an instance of the binding.

  2. Establezca la propiedad Mode en Message.Set the Mode property to Message.

  3. Establezca la propiedad ClientCredential en un valor apropiado.Set the ClientCredential property to an appropriate value. El siguiente código establece la propiedad en 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
    

Para establecer el Modo y la propiedad ClientCredentialType en configuraciónTo set the Mode and ClientCredentialType property in configuration

  1. Agregue un elemento de enlace adecuado al elemento <bindings > del archivo de configuración.Add an appropriate binding element to the <bindings> element of the configuration file. En el ejemplo siguiente se agrega un elemento de > de <wsHttpBinding .The following example adds a <wsHttpBinding> element.

  2. Agregue un elemento <binding> y establezca su atributo name en un valor adecuado.Add a <binding> element and set its name attribute to an appropriate value.

  3. Agregue un elemento <security> y establezca el atributo mode en Message, Transport o TransportWithMessageCredential.Add a <security> element and set the mode attribute to Message, Transport, or TransportWithMessageCredential.

  4. Si se establece el modo en Transport, agregue un elemento clientCredential y establezca el atributo<transport> en un valor apropiado.If the mode is set to Transport, add a <transport> element and set the clientCredential attribute to an appropriate value.

    El siguiente ejemplo establece el modo en “Transport", y, a continuación, establece el atributo clientCredentialType del Windows" en “<transport>.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 >
    

    De manera alternativa, establezca el security mode en "Message", seguido por un elemento <"message">.Alternatively, set the security mode to "Message", followed by a <"message"> element. Este ejemplo establece el clientCredentialType en "Certificate".This example sets the clientCredentialType to "Certificate".

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

    Utilizar el valor TransportWithMessageCredential es un caso especial y se explica más adelante.Using the TransportWithMessageCredential value is a special case, and is explained below.

Uso de TransportWithMessageCredentialUsing TransportWithMessageCredential

Al establecer el modo de seguridad en TransportWithMessageCredential, el transporte determina el mecanismo real que proporciona la seguridad de nivel de transporte.When setting the security mode to TransportWithMessageCredential, the transport determines the actual mechanism that provides the transport-level security. Por ejemplo, el protocolo HTTP utiliza Secure Sockets Layer (SSL) sobre HTTP (HTTPS).For example, the HTTP protocol uses Secure Sockets Layer (SSL) over HTTP (HTTPS). Por consiguiente, se omite el establecimiento de la propiedad ClientCredentialType de cualquier objeto de seguridad de transporte (como HttpTransportSecurity).Therefore, setting the ClientCredentialType property of any transport security object (such as HttpTransportSecurity) is ignored. En otras palabras, solo puede establecer el ClientCredentialType del objeto de seguridad del mensaje (para el enlace WSHttpBinding, el objeto NonDualMessageSecurityOverHttp).In other words, you can only set the ClientCredentialType of the message security object (for the WSHttpBinding binding, the NonDualMessageSecurityOverHttp object).

Para obtener más información, vea Cómo: Utilice la seguridad de transporte y las credenciales de mensaje .For more information, see How to: Use Transport Security and Message Credentials.

Vea tambiénSee also