services que entre ejemplo diferencia cuál con asp.net wcf active-directory wcf-security

que - ¿Cómo autentico al usuario entre ASP.NET y WCF?



wcf vs web api (4)

Estamos desarrollando una aplicación de intranet basada en navegador. Todos los usuarios tienen una cuenta de directorio activo, por lo que la opción obvia sería utilizar la Autenticación de Windows integrada. Pero habrá múltiples usuarios que accedan a la misma máquina cliente, por lo que decidimos usar autenticación basada en formularios (pero autenticada contra AD).

En este escenario, ¿cuál es la mejor manera de autenticarse entre mi aplicación ASP.NET (IIS) y WCF Services (otro servidor IIS 7). No quiero usar el modo o certificado de compatibilidad asp.Net.

Estoy pensando en crear otra cuenta de dominio para autenticar ASP.NET y WCF. También estoy pasando la información sobre el usuario actual de ASP.NET a WCF como información de encabezado. ¿Es esta la manera correcta de hacerlo? El siguiente código llamará desde ASP.NET para acceder y obtener cada método de servicio.

// Call WCF service from ASP.NET Application using a new domain account for each call. proxy.ClientCredentials.Windows.ClientCredential.Domain = "mydomain"; ServiceReference.HelloWorldClient proxy = new ServiceReference.HelloWorldClient(); proxy.ClientCredentials.Windows.ClientCredential.UserName = "new_domain_account"; proxy.ClientCredentials.Windows.ClientCredential.Password = "password";

¿Hay alguna forma mejor de autenticar WCF desde ASP.NET?

Gracias, Ash.


No hay nada especial en autenticar una aplicación ASP.NET al servicio WCF. Todas las opciones de autenticación normales están disponibles (nombre de usuario, X.509, ventanas).

Lo interesante aquí es que también quiere pasar las credenciales del cliente basadas en el navegador. Este es un patrón conocido llamado sub sistema de confianza. Y sí, puede pasarlos en el encabezado siempre que el mensaje esté protegido (encriptado).


No sé ASP.NET en absoluto, pero he hecho WCF algunos, y creo que lo que debes hacer es obtener el "inicio de sesión de formulario" para luego suplantar al usuario en el hilo actual, y luego iniciar la conexión WCF al otro servidor. Eche un vistazo a este artículo en msdn para obtener una visión general rápida de algo de esto exclusivamente dentro de WCF. No sé cómo va a integrar esto en ASP.NET (como dije, sé cero sobre esa tecnología), pero conceptualmente creo que esto es lo que tendrá que hacer.


Parece que no es un problema de WCF, sino un problema con el navegador que se autentica de forma transparente.

Intente deshabilitar la autenticación integrada de Windows en IIS para la aplicación ASP.NET y cambie a autenticación básica o implícita. Ambos se seguirán autenticando frente a AD, pero el navegador no autenticará de forma transparente al usuario que ha iniciado sesión.

Luego, en su aplicación ASP.NET, simplemente haga que use la suplantación y pase las credenciales de las que IIS tenga conocimiento al servicio WCF al que está llamando.