Это продолжение предыдущей публикации о невозможности олицетворять пользователя, который в данный момент находится в системе 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 Authorization Rules
Authentication
Один вопрос: если я отключу анонимную аутентификацию, мне будет предложено войти на сайт. Я думал, если бы вы вошли в систему с учетной записью Active Directory в домене, тогда эта проблема не возникла бы? Даже если я введу свое имя пользователя / пароль в это приглашение, я все равно не смогу работать с олицетворением.
Основные настройки