2009-01-08 24 views
37

Tengo un servicio WCF que usa basicHttpbinding en desarrollo.Habilitar SSL para mi servicio WCF

Ahora en el producto que queremos utilizar SSL, ¿qué cambios debo hacer para forzar conexiones SSL solamente?

+0

Esto se responde aquí: Espero que ayude http: // stackoverflow.com/questions/2904883/how-can-i-use-wcf-with-only-basichttpbinding-ssl-and-basic-authentication-in-ii – user3607430

Respuesta

43

Esta página en MSDN explica WCF Binding Security.

http://msdn.microsoft.com/en-us/library/ms729700.aspx

La clase BasicHttpBinding se utiliza principalmente para interoperar con servicios web existentes, y muchos de esos servicios son recibidos por Internet Information Services (IIS). En consecuencia, la seguridad de transporte para esta vinculación está diseñada para la interoperación sin interrupciones con IIS sitios. Esto se hace configurando el modo de seguridad en Transport y luego configurando el tipo de credencial del cliente. Los valores del tipo de credencial corresponden a los mecanismos de seguridad del directorio IIS. El siguiente código muestra el modo que se está configurando y el tipo de credencial establece en Windows. Puede utilizar esta configuración cuando tanto el cliente como el servidor están en el mismo dominio de Windows.

C#

BasicHttpBinding b = new BasicHttpBinding(); 
b.Security.Mode = BasicHttpSecurityMode.Transport ; 
b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows; 

O, en configuración:

<bindings> 
    <basicHttpBinding> 
      <binding name="SecurityByTransport"> 
       <security mode="Transport"> 
       <transport clientCredentialType="Windows" /> 
       </security> 
      </binding> 
    </basicHttpBinding> 
</bindings> 

para habilitar SSL, sin un inicio de sesión, establezca clientCredentialType en "None".

opciones para el modo de seguridad son:

Ninguno, Transporte, Mensaje, TransportWithMessageCredential y TransportCredentialOnly

Puede encontrar más detalles en: http://msdn.microsoft.com/en-us/library/system.servicemodel.basichttpsecuritymode.aspx

+5

modo de seguridad de "transporte" significa SSL? – Blankman

+1

Sí, para este enlace. – xtrem

0

Creo que si debajo de las "consolidaciones" donde tiene <Security mode="Transport">, si lo cambiara para ser <security mode="None">, estaría bien.

esta es una copia de una base de código en la que estoy trabajando que hice eso en el código, y parece estar funcionando. Me sale el WSDL al menos cuando golpeo el servicio, si eso ayuda a todos :)

BasicHttpBinding basicBinding = new BasicHttpBinding(); 
if (RegistryConnectionStringFactory.UseSslForCommunications) 
{ 
    basicBinding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential; 
    basicBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName; 
} 
else 
{ 
    basicBinding.Security.Mode = BasicHttpSecurityMode.None; 
    basicBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName; 
} 
1

acabo enfrentado el mismo problema y ha encontrado este artículo de MSDN: How to: Configure an IIS-hosted WCF service with SSL Al final del artículo se encuentra la configuración xml del archivo WebConfig.

La solución funcionó bien para mí. Una cosa más para decir, ¡ten en cuenta que necesitas un certificado REAL para tu lanzamiento!

Cuestiones relacionadas