На прошлой неделе имя пользователя Active Directory сотрудника было изменено (или для него создано новое). Для целей этого примера предположим, что эти имена пользователей:
Old: Domain\11111
New: Domain\22222
Когда этот пользователь теперь входит в систему, используя свое новое имя пользователя, и пытается перейти к любому из ряда приложений ASP.NET, использующих только При проверке подлинности Windows (без включения анонимности) система проверяет подлинность, но наш следующий уровень разрешений на основе базы данных предотвращает их авторизацию. Мы отследили это до несоответствия имен пользователей между их учетной записью и тем, кем их считает IIS. Ниже приведены выходные данные нескольких переменных ASP.NET из приложений, работающих в среде Windows 2008 IIS7.5:
Request.ServerVariables["AUTH_TYPE"]: Negotiate
Request.ServerVariables["AUTH_USER"]: Domain\11111
Request.ServerVariables["LOGON_USER"]: Domain\22222
Request.ServerVariables["REMOTE_USER"]: Domain\11111
HttpContext.Current.User.Identity.Name: Domain\11111
System.Threading.Thread.CurrentPrincipal.Identity.Name: Domain\11111
Из вышесказанного я вижу, что только серверная переменная LOGON_USER имеет правильное значение, которое представляет собой учетную запись, которую пользователь использовал для входа на свой компьютер. Однако мы используем переменную AUTH_USER для поиска разрешений базы данных.
В отдельной тестовой среде (совершенно другой сервер: Windows 2003, IIS6) для всех вышеперечисленных переменных отображается «Домен \ 22222». Так что, похоже, это проблема, связанная с сервером, например, учетные данные каким-то образом кешируются либо на их машине, либо на сервере (первое кажется более правдоподобным).
Таким образом, возникает вопрос: как мне подтвердить, ошибается ли запрос пользовательская машина или сервер? Как мне это исправить?
Я просмотрел следующие два ресурса и скоро попробую первый:
Спасибо.
Проблема похожа на эту проблему здесь:
https://stackoverflow.com/questions/168946/iis-returning-old-user-names-to-my-application
Для пояснения вот решение: