Pregunta

Mi empresa tiene una gran aplicación que estamos terminando. Utiliza WCF como la columna vertebral de Active Directory para la autenticación. Esto funciona perfectamente para uno de los dos sitios, ya que el modelo de autenticación es Windows y debe ser parte del dominio para iniciar sesión en el sitio. La pregunta que tengo se relaciona con el otro sitio al que se puede acceder externamente. Establece ClientCredentials.Windows.ClientCredential para la llamada de proxy con un usuario / paso específico para la suplantación de un usuario de AD para que funcione el modelo de seguridad completo. Todo esto funciona exactamente como se esperaba también.

La pregunta que tengo es, en la web, puedo usar HttpContext.Current.User.Identity.Name para obtener el usuario actualmente registrado en el formulario de autenticación de Formularios, pero para hacer esto tengo que asegurarme de un System.Web existe una referencia contra la DLL en la que estoy trabajando actualmente. Nuestros objetos base provienen de una clase simplista que no conoce System.Web. ¿Hay alguna forma de averiguar el usuario de Formularios que ha iniciado sesión dentro de ese proyecto de objeto base? Intenté System.Security.Principal pero eso solo me da acceso a las cuentas de Windows por lo que pude ver y no me hará ningún bien.

Sé que una opción es solo hacer referencia a System.Web y terminar con eso, pero eso me suena realmente torpe y no es la mejor opción, así que espero algunos consejos aquí.

¿Fue útil?

Solución

Thread.CurrentPrincipal.Identity hará exactamente lo mismo que HttpContext.CurrentContext...

Devolverá la identidad asociada con el subproceso de ejecución actual, que en la mayoría de los casos es el usuario que ha iniciado sesión.

Nota: * Si usas delegación / suplantación o ejecutas como una cuenta de servicio, devolverá la cuenta de la identidad del subproceso, pero en tu caso, no suena como si estuvieras haciendo ningún contexto cambio de identidad.

Otros consejos

Si el nombre de usuario como una cadena es suficiente para usted,

Environment.UserName
// Environment.UserDomainName and MachineName can also be useful

De MSDN :

  

Obtiene el nombre de usuario de la persona que inició el hilo actual.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top