2012-02-17 8 views
2

В настоящее время я работаю над ASP.NET-приложением, которое включает регистрацию пользователей с использованием проверки подлинности Windows. Это приводит к тому, что HTTPContext.User и Thread.Principal будут установлены с теми же учетными данными, что и пользовательский журнал, в котором ожидается поведение, в то время как WindowsIdentity остается как пользователь IIS .NET AppPool.Почему IIS, кажется, поднимает WindowsIdentity одного запроса из AppPool на мою учетную запись пользователя?

Недавно я заметил в журналах приложений, что, как представляется, один запрос (как правило, 5-й-й запрос при загрузке страницы), где WindowsIdentity запускается как пользователь IIS, но заканчивается тем, что он повышен до пользователя, который вход в систему.

Это происходит только тогда, когда пользователь обращается к корневому пути (например, http://localhost/). Если я укажу любой другой точный путь, такой как http://localhost/index.aspx, этот запрос не появляется, и WindowsIdentity никогда не изменяется.

Просматривая (довольно большую) кодовую базу, я могу найти только один метод, который олицетворяет WindowsIdentity, но этот метод не вызывается отдельно от конкретных обстоятельств на определенной странице.

Мне было интересно, почему это может произойти, и если есть какая-то причина, по которой IIS может делать это сама по себе.

ответ

1

Как мне кажется, доступ root (http: // localhost) предназначен только для пользователя-администратора, поэтому он проверяет, где он является пользователем-администратором или нет .., является http://loclahost доступным, если пользователь не в пользователь-администратор?

+1

Не имеет значения, является ли пользователь администратором или нет. URL http: // localhost/должен просто использовать документ по умолчанию (http: //localhost/index.aspx) и отправить его вместо этого. Я пытаюсь выяснить, является ли это то, что делает IIS (либо намеренно, либо как побочный эффект), или если это что-то специфичное для кода. – ChrisPatrick