2011-10-28 19 views
6

Tengo un servicio web que usa la Autenticación de Windows. El servicio web está alojado en IIS. ¿Es posible restringir el acceso a ese servicio web solo a pocos usuarios específicos? Mi actual web.config:¿Cómo dar acceso al servicio web WCF alojado en IIS solo para usuarios específicos?

<services> 
    <service name="LANOS.SplunkSearchService.SplunkSearch"> 
    <endpoint binding="basicHttpBinding" bindingConfiguration="basicHttp" 
     contract="LANOS.SplunkSearchService.ISplunkSearch" /> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 
</services> 

<bindings> 
    <basicHttpBinding> 
    <binding name="basicHttp" allowCookies="true" maxBufferSize="20000000" 
     maxBufferPoolSize="20000000" maxReceivedMessageSize="20000000"> 
     <readerQuotas maxDepth="32" maxStringContentLength="200000000" 
     maxArrayLength="200000000" /> 
     <security mode="TransportCredentialOnly"> 
     <transport clientCredentialType="Windows" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 

Por cierto, he intentado una solución similar a esta, que encontré a través de Internet:

<authentication mode="Windows"/> 

    <authorization> 

      <allow roles=".\Developers"/> 

      <allow users="DOMAIN\ServiceAccount"/> 

      <deny users="*"/> 

    </authorization> 

No funciona aunque. :(Se dejó que todos los usuarios del dominio pasan a través

+0

Ha desactivado autenticación anónima y autenticación de Windows habilitada para la aplicación que aloja su servicio WCF en IIS? –

+0

Sí, lo he hecho. – neurotix

Respuesta

4

de Wrox Professional WCF 4 describe una forma de configurar la autenticación Nombre de usuario/contraseña en el capítulo 8. En resumen, se necesita un validador personalizado:..

public class MyCustomUserNamePasswordValidator : UserNamePasswordValidator 
{ 
    public override void Validate(string userName, string password) 
    { 
    if(userName != "foo" && password != "bar") 
    { 
     throw new SecurityTokenValidationException("Invalid user"); 
    } 
    } 
} 

Después de que se necesitará agregar modificar su elemento userNameAuthentication en la configuración del servicio en "Usuario" y definir el validador:.

<userNameAuthentication 
     userNamePasswordValidationMode = "Custom" 
      customUserNamePasswordValidatorType = 
      "Common.MyCustomUserNamePasswordValidator, Common" /> 

espero que esto ayude a

+1

Okey Lo intentaré, pero no creo que puedas hacerlo funcionar sin modificar el código WS. Todavía estoy esperando poder hacer que funcione solo cambiando la configuración web. – neurotix

Cuestiones relacionadas