Mam witrynę ASP.NET, która musi korzystać z uwierzytelniania za pomocą formularzy, a nie z uwierzytelniania systemu Windows, aby uzyskać dostęp do ActiveDirectoryMembershipProvider
. Witryna musi używać formularzy, ponieważ potrzebują one zaprojektowanego formularza wejściowego zamiast wyskakującego okna uwierzytelniania przeglądarki, którego używa uwierzytelnianie systemu Windows.Personifikowanie przy użyciu uwierzytelniania za pomocą formularzy
Witryna musi podszywać się pod użytkownika zalogowanego za pośrednictwem usługi Active Directory, aby uzyskać dostęp do plików określonych przez użytkownika.
Jednak WindowsIdentity.GetCurrent()
nie jest taka sama jak HttpContext.Current.User.Identity
chociaż moim web.config zawiera:
<authentication mode="Forms">
<forms loginUrl="login.aspx" timeout="480"/>
</authentication>
<identity impersonate="true" />
Nie mogę korzystać LoginUser()
a WindowsIdentity.Impersonate()
bo muszę podawać się jako użytkownik AD, aby uzyskać ich konkretne uprawnienia i nie wiem, hasło użytkownika, ponieważ formularze dba o zalogowanie się.
Czy to możliwe, być może z login.aspx.cs, aby wziąć System.Web.UI.WebControls.Login.Password
, a następnie zapisać LoginUser()
żeton w zmiennej sesji dla WindowsIdentity.Impersonate()
później? A może o wiele bezpieczniejsza metoda podszywania się pod właściwy sposób?
Jestem mylić dlaczego Forms uwierzytelniania nie może automatycznie <identity impersonate="true" />
Czytałem ten http://msdn.microsoft.com/en-us/library/ms998351.aspx ale używa uwierzytelniania systemu Windows.
Oto obejście użyłem: Dałem dostęp IUSER_ do plików, a następnie sprawdzić, zdobyć uprawnienia każdego pliku lub folderu przez DirectorySecurity.GetAccessRules(). Jeśli "FileSystemAccessRule.Value ==" DOMAIN \\ "+ Page.User.Identity.Name" w regułach dostępu, dodaję ten plik lub folder do listy. Wreszcie wyświetlam listę plików. Więc zamiast podszywać się, daję IUSR_ pełny dostęp i ręcznie sprawdzam uprawnienia do rzeczy, których potrzebuję, aby ten użytkownik miał dostęp. – Robert