Buscando un pequeño consejo (o tal vez incluso una respuesta directa).Pasando HttpContext.Current.User.Identity a WCF
Tengo un sitio web de MVC3. También tengo un conjunto de servicios WCF en ejecución (por ahora todo está en la misma caja).
Lo que estoy intentando hacer es autenticar al cliente (esa parte funciona bien), luego pasar ese usuario autenticado a varias llamadas WCF.
Por el momento me he enganchado hasta el método Application_AuthenticateRequest()
en Global.Asax
, que se reduce a la creación de un nuevo GenericIdentity & GenericPrincipal
, a continuación, asignar ese principal a HttpContext.Current.User
:
...
GenericIdentity identity = new GenericIdentity(userName);
GenericPrincipal principal = new GenericPrincipal(identity, null);
HttpContext.Current.User = principal;
...
Y esa parte parece estar funcionando muy bien como bien.
Pero cuando llegué a mi servicio, perdí por completo al usuario que configuré. Los valores son vacíos o falsos
Lo principal que he notado es que en el lado del cliente, el objeto HttpContext.Current.User.Identity
es del tipo {System.Web.Security.FormsIdentity}
, pero en el servicio es del tipo {System.Security.Principal.WindowsIdentity}
.
Basado en algo de lo que he leído, suena como simplemente modificar mi web.config
por lo que contiene aspNetCompatibilityEnabled="true"
puede ser suficiente para que esto funcione correctamente. Pero eso no es lo que estoy viendo. Entonces, o no estoy entendiendo todo (una posibilidad muy buena) o tengo algo malogrado (otra buena posibilidad).
Así que mi pregunta. ¿Es esto posible, y si es así, pensamientos sobre lo que me estoy perdiendo? Noté que algunos otros publicaron algo similar pero nunca recibieron una respuesta definitiva (ver here y here).
Cualquier sugerencia es muy apreciada.
Es extraño que diga que ve un 'FormsIdentity' cuando establece específicamente un' GenericIdentity' en el contexto actual del usuario. ¿Te mezclaste allí? –