servicemodel clientcredentialtype clientbase wcf ssl wcf-binding wcf-security basichttpbinding

clientcredentialtype - ¿Cómo puedo usar WCF solo con basichttpbinding, SSL y autenticación básica en IIS?



wcf rest https (1)

¿Es posible configurar un servicio WCF con SSL y autenticación básica en IIS utilizando solo el enlace BasicHttpBinding? (No puedo usar el enlace wsHttpBinding)

El sitio está alojado en IIS 7, con la siguiente configuración de autenticación:

- Anonymous access: off - Basic authentication: on - Integrated Windows authentication: off !!

Config del servicio:

<services> <service name="NameSpace.SomeService"> <host> <baseAddresses> <add baseAddress="https://hostname/SomeService/" /> </baseAddresses> </host> <!-- Service Endpoints --> <endpoint address="" binding="basicHttpBinding" bindingNamespace="http://hostname/SomeMethodName/1" contract="NameSpace.ISomeInterfaceService" name="Default" /> <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/> </service> </services> <behaviors> <serviceBehaviors> <behavior> <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> <serviceMetadata httpsGetEnabled="true"/> <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> <serviceDebug includeExceptionDetailInFaults="false"/> <exceptionShielding/> </behavior> </serviceBehaviors> </behaviors>

Probé 2 tipos de enlaces con dos errores diferentes:

1 - Error de IIS: ''No se pudo encontrar una dirección base que coincida con el esquema http para el punto final con el enlace BasicHttpBinding. Los esquemas de direcciones base registradas son [https].

<bindings> <basicHttpBinding> <binding> <security mode="TransportCredentialOnly"> <transport clientCredentialType="Basic"/> </security> </binding> </basicHttpBinding> </bindings>

2 - Error de IIS: la configuración de seguridad para este servicio requiere autenticación ''Anónima'' pero no está habilitada para la aplicación IIS que aloja este servicio.

<bindings> <basicHttpBinding> <binding> <security mode="Transport"> <transport clientCredentialType="Basic"/> </security> </binding> </basicHttpBinding> </bindings>

¿Alguien sabe cómo configurar esto correctamente? (¿si es posible?)


Después de investigar y hacer algunas preguntas a algunos colegas, finalmente resolvimos el problema.

Es importante entender que hay 2 aspectos de seguridad en este caso. La seguridad IIS y la seguridad WCF.

Seguridad de IIS: habilite SSL y habilite la autenticación básica. Deshabilitar la autenticación anónima. (Por supuesto, cree una cuenta / grupo de Windows y configure los permisos en su aplicación en IIS).

Seguridad WCF : como el enlace es solo un enlace BasicHttpBinding, el servicio no requiere validar nada. IIS es responsable de esto.

La configuración de enlace del servicio:

<bindings> <basicHttpBinding> <binding> <security mode="Transport"> <transport clientCredentialType="Basic" /> </security> </binding> </basicHttpBinding>

Y finalmente, para resolver el primer error, eliminamos el punto final de mex. Este punto final requiere un enlace HTTP.

Suprimido

<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>