Это продолжение предыдущего сообщения о невозможности выдать себя за пользователя, который в данный момент вошел в систему Windows. Было много хороших предложений, но предыдущая ветка становилась беспорядочной, поэтому я возвращаюсь к этому сообщению. Надеюсь, что текущее состояние, задокументированное ниже, станет очевидным, в чем проблема. Это проторенный путь, поэтому я должен поверить, что все, что мне не хватает, - это небольшой шаг настройки.
ПРОБЛЕМА: мне нужно, чтобы ASP.NET олицетворял текущего вошедшего в систему пользователя. Когда я работаю под IIS 7.5, это не работает. IIS Express работает нормально, но я считаю, что это связано с тем, что сеанс отладки выполняется под моим идентификатором пользователя.
Я использую Environment.Username
, чтобы определить, кто этот пользователь. Было высказано предположение, что это свойство всегда возвращает имя пользователя, вошедшего в систему, но по результатам моего тестирования оно возвращает олицетворенного пользователя из IIS.
Например, если в моем web.config…
<identity impersonate="true" />
Когда я использую IIS 7.5 с этим параметром, Environment.Username
возвращает IUSR. Я считаю, что это анонимная учетная запись пользователя IIS.
Если я изменю web.config на…
<identity impersonate="true" userName="domain\jlivermore" password="mypassword" />
… Тогда Environment.Username возвращает jlivemore. Однако мне нужно, чтобы он возвращал jlivermore без явной установки его в web.config.
Вот мои настройки IIS…
Правила авторизации .NET
Аутентификация
Один вопрос: если я отключу анонимную аутентификацию, мне будет предложено войти на сайт. Я думал, если бы вы вошли в систему с учетной записью Active Directory в домене, тогда эта проблема не возникла бы? Даже если я введу свое имя пользователя / пароль в эту подсказку, я все равно не получу работу олицетворения.
Основные настройки