Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 de mensaje". Dos modos adicionales son específicos de dos enlaces: el modo "transport-credential only" que se encuentra en BasicHttpBinding y el modo "Both", que se encuentra en 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, consulte Seguridad WCF, Información general sobre seguridad, Servicios de seguridad y Servicios de seguridad y clientes. Para obtener más información sobre el modo de transporte y el mensaje, consulte Seguridad de transporte y Seguridad de mensajes.
Para establecer el modo de seguridad en código
Cree una instancia de la clase del enlace que está utilizando. Para obtener una lista de enlaces predefinidos, consulte Enlaces que proporciona el sistema. En el siguiente ejemplo se crea una instancia de la clase WSHttpBinding.
Establezca la propiedad
Modedel objeto devuelto por la propiedadSecurity.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Transport;Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.TransportDe manera alternativa, establezca el modo en mensaje, como se muestra en el código siguiente.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Message;Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.MessageO establezca el modo en transporte con credenciales de mensaje, como se muestra en el código siguiente.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.TransportWithMessageCredential;Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.TransportWithMessageCredentialTambién puede establecer el modo en el constructor del enlace, como se muestra en el código siguiente.
WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);Dim b As 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
Cree una instancia del enlace.
Establezca la propiedad
ModeenTransport.Establezca la propiedad
ClientCredentialen un valor apropiado. El siguiente código establece la propiedad enWindows: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 mensaje
Cree una instancia del enlace.
Establezca la propiedad
ModeenMessage.Establezca la propiedad
ClientCredentialen un valor apropiado. El siguiente código establece la propiedad enCertificate: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ón
Agregue un elemento de enlace apropiado al elemento de <enlaces> del archivo de configuración. En el ejemplo siguiente se agrega un elemento <wsHttpBinding>.
Agregue un elemento
<binding>y establezca el atributonameen un valor adecuado.Agregue un elemento
<security>y establezca el atributomodeenMessage,TransportoTransportWithMessageCredential.Si se establece el modo en
Transport, agregue un elemento<transport>en un valor apropiado.El siguiente ejemplo establece el modo en “
Transport", y, a continuación, establece el atributoclientCredentialTypedel<transport>.<wsHttpBinding> <binding name="TransportSecurity"> <security mode="Transport" > <transport clientCredentialType = "Windows" /> </security> </binding> </wsHttpBinding >De manera alternativa, establezca el
security modeen "Message", seguido por un elemento<"message">. Este ejemplo establece elclientCredentialTypeen "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, consulte Procedimiento para usar credenciales de mensaje y seguridad de transporte.