2010-01-07 9 views
5

Tengo un sitio web con una gran base de usuarios configurada con la autenticación de formularios asp.net 2.0. Antes de que el usuario inicie sesión a través de la autenticación de formularios, ¿es posible recuperar el nombre de inicio de sesión de Windows/nombre de la cuenta de usuario en la máquina que está utilizando?¿Es posible obtener el nombre de inicio de sesión de Windows con el sitio que ejecuta la autenticación de formularios asp.net?

Muchas gracias

Respuesta

0

no antes no (no del servidor).

Dependiendo del tipo de autenticación que utilice, y de la forma en que se configura el sitio, PUEDE hacer que inicie sesión con sus detalles de Windows.

1

Lamentablemente, no: si el usuario no ha iniciado sesión, está navegando de forma anónima y, por lo tanto, es desconocido para el servidor. No hay forma de identificarlos.

Una vez que hayan iniciado sesión, si está utilizando la suplantación, usen WindowsIdentity.GetCurrent().Name. Sin embargo, para la autenticación de formularios no hay una forma directa de pedirle al navegador sus credenciales de Windows, ¡ya que ni siquiera pueden ejecutar Windows!

+0

Muchas gracias. En realidad, no importa si es antes o después del inicio de sesión, solo necesito saber el nombre de usuario del cliente. Después de los formularios, inicie sesión en WindowsIdentity.GetCurrent(). Name devuelve nt authority/network service. Así que supongo que esto no es posible sin algún tipo de control ActiveX. Gracias por la ayuda. – Shigg

+0

De hecho, asumí (incorrectamente) que estaba usando una suplantación: he actualizado mi respuesta. –

+0

Shigg: En realidad, es posible, si su sitio está en la zona de confianza y usando la autenticación de Windows. –

1

Esto sólo sería posible si se utiliza la autenticación de Windows en su aplicación web y sólo si el usuario ha iniciado sesión.
El tipo de información que está después no se envía como parte de la solicitud Web (con razón) y, por lo tanto, es desconocido para el servidor web.

4

Sin duda es posible, agregando otra aplicación web a su sistema. Aquí está más o menos cómo lo he hecho:

Su aplicación web principal utiliza la autenticación de formularios. En la página de inicio de sesión de formularios, cualquier usuario que se determine que está en la LAN local (verificar la dirección IP), los redirecciona a otra aplicación que usa la autenticación de Windows. En esta segunda aplicación, puedes determinar al usuario (suponiendo que el navegador esté configurado para enviar credenciales automáticamente a la zona en la que reside tu aplicación), luego establecer una cookie que tu primera aplicación pueda leer y redireccionar al usuario a la aplicación original .

Esto funciona.

+0

¿Cómo se configura la cookie de aplicación cruzada? – awe

+1

@a usamos el mismo 'machineKey' que en SingleSignOn: http://stackoverflow.com/questions/4312020/single-sign-on-in-asp-net-cookie-name-machinekey-and-what-more –

Cuestiones relacionadas