У меня есть сайт ASP.NET, который должен использовать аутентификацию по формам, а не проверку подлинности Windows, чтобы получить доступ к ActiveDirectoryMembershipProvider
. Сайт должен использовать формы, потому что им нужна разработанная форма ввода вместо всплывающего окна проверки подлинности браузера, используемого для проверки подлинности Windows.
Сайт должен выдавать себя за пользователя, зарегистрированного через Active Directory, для доступа к конкретным файлам пользователя.
Однако WindowsIdentity.GetCurrent()
не совпадает с HttpContext.Current.User.Identity
, хотя мой файл web.config содержит:
<authentication mode="Forms">
<forms loginUrl="login.aspx" timeout="480"/>
</authentication>
<identity impersonate="true" />
Я не могу использовать LoginUser()
и WindowsIdentity.Impersonate()
, потому что мне нужно выдавать себя за то, что пользователь AD получил свои конкретные разрешения, и я не знаю пароль пользователя, потому что Forms заботится о регистрации.
Возможно ли, может быть, из login.aspx.cs взять System.Web.UI.WebControls.Login.Password
, а затем сохранить токен LoginUser()
в переменной сеанса для WindowsIdentity.Impersonate()
позже? Или, может быть, гораздо более безопасный способ олицетворения правильного пути?
Я смущен, почему автоматическая аутентификация не может автоматически <identity impersonate="true" />
Я прочитал этот http://msdn.microsoft.com/en-us/library/ms998351.aspx, но он использует проверку подлинности Windows.