2010-05-25 11 views
18

¿Es posible configurar un servicio WCF con SSL y Autenticación básica en IIS utilizando solo BasicHttpBinding-binding? (No puedo usar la wsHttpBinding vinculante)¿Cómo puedo usar WCF con solo basichttpbinding, SSL y Autenticación básica en IIS?

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

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

de servicio de configuración:

<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 IIS: 'No se pudo encontrar una dirección base que coincida con el esquema http para el punto final con 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: Configuración de seguridad para este servicio requieren autenticación 'Anónimo' pero no está habilitada para la aplicación de 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?)

Respuesta

24

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

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

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

seguridad WCF: Debido a que la unión es solamente un BasicHttpBinding, el servicio no requiere de nada válido. 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, por último, para resolver el primer error, se suprime el punto final Mex. Este punto final requiere un enlace HTTP.

Eliminado:

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

Gracias por este post. ¿Qué quiere decir con "establecer los permisos en su aplicación en IIS"? –

+2

¿A qué grupos debe estar acostumbrada la cuenta de usuario de Windows? ¿Qué permisos deberían ser configurados? –

+2

Por qué eliminar ''? – Kiquenet

Cuestiones relacionadas