asp.net mvc - impersonate - ¿Cómo obtener el nombre de usuario de Windows cuando identidad personificada="verdadero" en asp.net?
impersonate asp net (3)
A menos que esta funcionalidad haya cambiado bajo el marco de MVC, y no creo que tenga, Page.User.Identity.Name debería funcionar. Parece que su sitio está configurado para permitir la autenticación anónima. Si es así, intente desactivarlo.
Estoy creando una aplicación intranet asp.net mvc a la que todos en la empresa deberían tener acceso. Necesito ejecutar el sitio web suplantado por el acceso a la base de datos, etc., pero quiero saber quién es cada usuario.
Cuando miro en Page.User.Identity.Name
, está en blanco. ¿Es posible obtener el nombre de la cuenta de Windows del usuario a pesar de que el sitio se está ejecutando suplantado?
Editar: Aquí hay un poco más de información. Tengo un sitio en IIS 6 en ejecución con acceso anónimo habilitado. El sitio se ejecuta bajo una cuenta del sistema que tiene acceso a la base de datos (porque todos los empleados no tienen acceso a la base de datos).
Mi web.config tiene <authentication mode="Windows" />
y <identity impersonate="true"/>
Mi objetivo es que los usuarios no tengan que iniciar sesión; el hecho de que hayan iniciado sesión en nuestra red (y el hecho de que el sitio no está en una IP externa) es suficiente autenticación. Me gustaría saber quién es el usuario para rastrear los cambios que hacen, etc.
Con <authentication mode="Windows"/>
en su aplicación y el acceso anónimo habilitado en IIS, verá los siguientes resultados:
System.Environment.UserName: Computer Name
Page.User.Identity.Name: Blank
System.Security.Principal.WindowsIdentity.GetCurrent().Name: Computer Name
Con <authentication mode="Windows"/>
en su aplicación y "Acceso anónimo" deshabilitado y solo "Autenticación integrada de Windows" en IIS, verá los siguientes resultados:
System.Environment.UserName: ASPNET (user account used to run ASP.NET service)
Page.User.Identity.Name: Domain/ Windows Account Name
System.Security.Principal.WindowsIdentity.GetCurrent().Name: Computer Name/ASPNET
Con <authentication mode="Windows"/>
y <identity impersonate ="true"/>
en su aplicación, y "Acceso anónimo" deshabilitado y solo "Autenticación integrada de Windows" en IIS, verá los siguientes resultados:
System.Environment.UserName: Windows Account Name
Page.User.Identity.Name: Domain/ Windows Account Name
System.Security.Principal.WindowsIdentity.GetCurrent().Name: Domain/ Windows Account Name
prueba esto
Principal.WindowsIdentity.GetCurrent.Name
Debería devolver una cadena con el nombre de inicio de sesión de los usuarios