Si usted es anfitrión de su servicio WCF en IIS, se ejecutará en el proceso de trabajo de ASP.NET, lo que significa que puede configurar la autenticación y autorización como lo haría con los servicios web ASMX:
<system.Web>
<authentication mode="Windows"/>
<authorization>
<allow roles=".\Administrators"/>
<deny users="*"/>
</authorization>
</system.Web>
Luego tendrá que deshabilitar el acceso anónimo a su punto final en IIS, y en su lugar habilitar Autenticación integrada de Windows.
En la consola de administración de IIS, haga eso mostrando el cuadro de diálogo 'Propiedades' para su directorio virtual. A continuación, encontrará la configuración de seguridad en la pestaña 'Seguridad de directorios'.
Por supuesto, el único canal de comunicación disponible será HTTP. Los clientes tendrán que proporcionar su identidad de Windows en la solicitud en el transporte a nivel con estos ajustes:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WindowsSecurity">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="https://localhost/myservice"
binding="wsHttpBinding"
bindingConfiguration="WindowsSecurity"
contract="IMyService" />
</client>
</system.serviceModel>
Tenga en cuenta que si su extremo de servicio utiliza wsHttpBinding entonces usted también tendrá que agregar SSL a su punto final ya que ese es un requisito exigido por WCF cuando usa seguridad de nivel de transporte.
Si en vez de ir para el basicHttpBinding, que luego son capaces de utilizar un modo menos seguro autenticación disponible en WCF llamada TransportCredentialOnly, donde ya no se requiere SSL.
Para obtener información más detallada, here es una buena visión general de la infraestructura de seguridad en WCF.
Tenga en cuenta que si desea hacer esto, necesita activar el modo de compatibilidad ASP.NET en su archivo web.config. De lo contrario, simplemente no funcionará (y tampoco arrojará un error). – Rocklan
Nota: para que esto funcione, system.web/roleManager/@enabled debe ser falso u omitirse; de lo contrario, los roles serán IIS .Net Roles y no grupos de Windows. – Polyfun