Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
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 "solo transport-credential" que se encuentra en BasicHttpBindingy el modo "Ambos", que se encuentra en NetMsmqBinding. Sin embargo, este tema se centra en los tres modos de seguridad comunes: Transport, Messagey TransportWithMessageCredential.
Tenga en cuenta que no todos los enlaces predefinidos admiten todos estos modos. En este tema se establece el modo con las WSHttpBinding clases y NetTcpBinding y se muestra cómo establecer el modo mediante programación y a través de la configuración.
Para obtener más información, consulte Seguridad de WCF, consulte Información general de seguridad, Protección de servicios y Protección de servicios y clientes. Para obtener más información sobre el modo de transporte y el mensaje, vea Seguridad de transporte y Seguridad de mensajes.
Para establecer el modo de seguridad en el código
Cree una instancia de la clase de enlace que está usando. Para obtener una lista de enlaces predefinidos, consulte System-Provided Enlaces. En este ejemplo se crea una instancia de la WSHttpBinding clase .
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.TransportComo 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 bien, establezca el modo para transportar 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 ClientCredentialType
Establecer el modo en uno de los tres valores determina cómo se establece la ClientCredentialType propiedad. Por ejemplo, utilizar la clase WSHttpBinding y establecer el modo en Transport significa 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 vínculo.
Establezca la propiedad
ModeenTransport.Establezca la
ClientCredentialpropiedad en un valor adecuado. El código siguiente 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 de la vinculación.
Establezca la propiedad
ModeenMessage.Establezca la
ClientCredentialpropiedad en un valor adecuado. El código siguiente 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 configurar las propiedades Mode y ClientCredentialType en la configuración
Agregue un elemento de enlace adecuado al elemento <bindings> del archivo de configuración. En el ejemplo siguiente se agrega un <elemento wsHttpBinding> .
Agregue un
<binding>elemento y establezca sunameatributo en un valor adecuado.Agregue un elemento
<security>y establezca el atributomodeenMessage,TransportoTransportWithMessageCredential.Si el modo se establece en
Transport, agregue un elemento<transport>y establezca el atributoclientCredentialen un valor adecuado.En el ejemplo siguiente se establece el modo en "
Transport"y, a continuación, se establece elclientCredentialTypeatributo del<transport>elemento en "Windows".<wsHttpBinding> <binding name="TransportSecurity"> <security mode="Transport" > <transport clientCredentialType = "Windows" /> </security> </binding> </wsHttpBinding >Como alternativa, establezca en
security mode"Message", seguido de un elemento<"message">. En este ejemplo, se establece elclientCredentialTypea "Certificate"".<wsHttpBinding> <binding name="MessageSecurity"> <security mode="Message" > <message clientCredentialType = "Certificate" /> </security> </binding> </wsHttpBinding >El uso del TransportWithMessageCredential valor es un caso especial y se explica a continuación.
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 usa capa de sockets seguros (SSL) a través de HTTP (HTTPS). Por lo tanto, se omite establecer la ClientCredentialType propiedad 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 vínculo WSHttpBinding, el objeto NonDualMessageSecurityOverHttp).
Para obtener más información, vea Cómo usar la seguridad de transporte y las credenciales de mensaje.