Tengo un sitio ASP.NET que debe usar la Autenticación de formularios y no la Autenticación de Windows para acceder a ActiveDirectoryMembershipProvider
. El sitio debe usar formularios porque necesitan un formulario de entrada diseñado en lugar de la ventana emergente de autenticación del navegador que usa la autenticación de Windows.Suplantar usando Autenticación de formularios
El sitio debe suplantar al usuario que inició sesión a través de Active Directory para acceder a los archivos específicos del usuario.
Sin embargo, el WindowsIdentity.GetCurrent()
no es el mismo que el HttpContext.Current.User.Identity
aunque mi web.config contiene:
<authentication mode="Forms">
<forms loginUrl="login.aspx" timeout="480"/>
</authentication>
<identity impersonate="true" />
no puedo usar LoginUser()
y la WindowsIdentity.Impersonate()
porque necesito hacerse pasar como el usuario de AD para obtener sus permisos específicos y no sé la contraseña del usuario, ya que las formas se encarga de inicio de sesión.
¿es posible tal vez de los login.aspx.cs, para tomar el System.Web.UI.WebControls.Login.Password
, a continuación, guardar el token LoginUser()
en una variable de sesión para WindowsIdentity.Impersonate()
después? ¿O tal vez un método mucho más seguro de suplantar el camino correcto?
estoy confundido por qué las formas de autenticación puede no de forma automática <identity impersonate="true" />
He leído este http://msdn.microsoft.com/en-us/library/ms998351.aspx pero utiliza la autenticación de Windows.
Aquí está la solución utilicé: me dio acceso a los archivos IUSER_, entonces puedo comprobar obtener los permisos de cada archivo o carpeta a través DirectorySecurity.GetAccessRules(). Si 'FileSystemAccessRule.Value ==" DOMAIN \\ "+ Page.User.Identity.Name' en las reglas de acceso, entonces agrego ese archivo o carpeta a una lista. Por último, mostrar la lista de archivos. Así que, en lugar de suplantar, otorgo al IUSR_ acceso total y verifico los permisos manualmente en las cosas que necesito que el usuario tenga acceso. – Robert