Compartir a través de


Cómo: Establecer el modo de seguridad

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 credencial del mensaje”. 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. Sin embargo, este tema se concentra en los tres modos de seguridad comunes: Transport, Messagey TransportWithMessageCredential.

Tenga en cuenta que no todos los enlaces predefinidos admiten todos estos modos. Este tema establece el modo con las clases WSHttpBinding y NetTcpBinding y muestra cómo establecer el modo mediante programación y configuración.

Para obtener más información sobre la seguridad de WCF, vea Información general sobre seguridad, Seguridad de servicios y Protección de servicios y clientes. Para obtener más información sobre los mensajes y el modo de transporte, vea Seguridad de transporte y Seguridad de los mensajes en WCF.

Para establecer el modo de seguridad en código

  1. Cree una instancia de la clase del enlace que está utilizando. Para obtener una lista de enlaces predefinidos, consulte Enlaces proporcionados por el sistema. En el siguiente ejemplo se crea una instancia de la clase WSHttpBinding.

  2. Establezca la propiedad Mode del objeto devuelto por la propiedad Security.

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

    De manera alternativa, establezca el modo en mensaje, como se muestra en el código siguiente.

    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.Message
    
    WSHttpBinding b = 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.

    Dim b As New WSHttpBinding()
    b.Security.Mode = SecurityMode.TransportWithMessageCredential
    
    WSHttpBinding b = 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.

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

Establecimiento de la propiedad la propiedad ClientCredentialType

El establecimiento del modo en uno de los tres valores determina cómo establece la propiedad ClientCredentialType. 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.

Para establecer la propiedad ClientCredentialType para el modo de transporte

  1. Cree una instancia del enlace.

  2. Establezca la propiedad Mode en Transport.

  3. Establezca la propiedad ClientCredential en un valor apropiado. El siguiente código establece la propiedad en Windows:

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

Para establecer la propiedad ClientCredentialType para el modo de mensaje

  1. Cree una instancia del enlace.

  2. Establezca la propiedad Mode en Message.

  3. Establezca la propiedad ClientCredential en un valor apropiado. El siguiente código establece la propiedad en Certificate:

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

Para establecer el Modo y la propiedad ClientCredentialType en configuración

  1. Agregue un elemento de enlace apropiado al elemento <bindings> del archivo de configuración. El siguiente ejemplo agrega un elemento <wsHttpBinding>.

  2. Agregue un elemento <binding>name y defina su atributo en un valor adecuado.

  3. Agregue un elemento <security>mode y establezca el atributo Message en Transport, TransportWithMessageCredential o .

  4. Si se establece el modo en Transport, agregue un elemento <transport>clientCredential y establezca el atributo en un valor apropiado.

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

Uso de TransportWithMessageCredential

Al establecer el modo de seguridad en TransportWithMessageCredential, el transporte determina el mecanismo real que proporciona la seguridad de nivel de transporte. Por ejemplo, el protocolo HTTP utiliza Secure Sockets Layer (SSL) sobre HTTP (HTTPS). Por consiguiente, se omite el establecimiento de la propiedad ClientCredentialType de cualquier objeto de seguridad de transporte (como HttpTransportSecurity). En otras palabras, solo puede establecer el ClientCredentialType del objeto de seguridad del mensaje (para el enlace WSHttpBinding, el objeto NonDualMessageSecurityOverHttp).

Para obtener más información, vea Cómo utilizar seguridad de transporte y credenciales de mensajes.

Vea también

Tareas

Cómo: Configurar un puerto con un certificado SSL
Cómo utilizar seguridad de transporte y credenciales de mensajes

Conceptos

Seguridad de los mensajes en WCF
Información general sobre seguridad
Enlaces proporcionados por el sistema

Otros recursos

Seguridad de transporte
<security> of <wsHttpBinding>
<security> of <basicHttpBinding>
<security> of <netTcpBinding>