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 “sólo 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 acerca de 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 acerca de 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.

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

    O establezca el modo en transporte con credenciales de mensaje, como se muestra en el código siguiente.

  3. También puede establecer el modo en el constructor del enlace, como se muestra en el código siguiente.

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:

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:

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> y defina su atributo name en un valor adecuado.

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

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

    El siguiente ejemplo establece el modo en “Transport", y, a continuación, establece el atributo clientCredentialType del <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, sólo puede establecer el ClientCredentialType del objeto de seguridad del mensaje (para el enlace WSHttpBinding, el objeto NonDualMessageSecurityOverHttp).

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

Consulte 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>