impersonare utilizzando i moduli che hanno un sito ASP.NET che deve utilizzare autenticazione basata su form e non autenticazione di Windows per accedere a un ActiveDirectoryMembershipProvider
. Il sito deve utilizzare i moduli perché richiedono un modulo di input progettato anziché il popup di autenticazione del browser utilizzato dall'autenticazione di Windows.autenticazione
il sito deve rappresentare l'utente connesso tramite Active Directory per accedere ai file specifici dell'utente.
Tuttavia, il WindowsIdentity.GetCurrent()
non è lo stesso del HttpContext.Current.User.Identity
anche se il mio web.config contiene:
<authentication mode="Forms">
<forms loginUrl="login.aspx" timeout="480"/>
</authentication>
<identity impersonate="true" />
non posso usare LoginUser()
e la WindowsIdentity.Impersonate()
perché ho bisogno di impersonare l'utente AD per ottenere le loro autorizzazioni specifiche , e non so la password dell'utente, perché le forme si prende cura di login.
e 'possibile forse dalle login.aspx.cs, a prendere il System.Web.UI.WebControls.Login.Password
, quindi salvare il LoginUser()
gettone in una variabile di sessione per WindowsIdentity.Impersonate()
dopo? O forse un metodo molto più sicuro di impersonare nel modo giusto?
Sono confuso perché autenticazione basata su form non può automaticamente <identity impersonate="true" />
ho letto questo http://msdn.microsoft.com/en-us/library/ms998351.aspx ma utilizza l'autenticazione di Windows.
Ecco la soluzione che ho usato: ho dato l'accesso IUSER_ ai file, poi verifico ottenere i permessi di ogni file o una cartella tramite DirectorySecurity.GetAccessRules(). Se il file 'FileSystemAccessRule.Value ==" DOMAIN \\ "+ Page.User.Identity.Name' nelle regole di accesso, allora aggiungo quel file o cartella a un elenco. Infine visualizzo l'elenco dei file. Quindi, invece di impersonare, do l'IUSR_ accesso completo e controllo le autorizzazioni manualmente sulle cose a cui ho bisogno che l'utente acceda. – Robert