Вот мой сценарий. Для работы я создал приложение, использующее встроенную проверку подлинности Windows. В Application_AuthenticateRequest()
я использую HttpContext.Current.User.Identity
для получения текущего WindowsPrincipal
пользователя моего веб-сайта.
Теперь вот смешная часть. Некоторые из наших пользователей недавно вышли замуж, и их имена изменились. (то есть пользовательский вход пользователя NT изменяется с jsmith
на jjones
), и когда мое приложение проверяет их подлинность, IIS передает мне свой OLD LOGIN. Я продолжаю видеть, что jsmith
передано моему приложению, пока я не перезагружу свой СЕРВЕР! Выход из системы не работает. Перезапуск пула приложений не работает. Только полная перезагрузка.
Кто-нибудь знает, что здесь происходит? Есть ли какая-то команда, которую я могу использовать для очистки любого кеша, который дает мне эту проблему? Не настроен ли мой сервер?
Примечание. Я определенно НЕ хочу перезапускать IIS, мои пулы приложений или машину. Поскольку это производственная коробка, это не очень эффективные варианты.
AviD -
Да, их UPN был изменен вместе с их именем входа. И Mark/Nick... Это сервер корпоративного производства... Его нельзя просто перезагрузить или перезапустить IIS.
Последующие (для потомков):
Ответ Grhm был спот-на. Эта проблема возникает на серверах с низким объемом, где у вас не так много людей, использующих ваши приложения, но достаточно запросов, чтобы сохранить личность пользователей в кеше. Ключевая часть KB, которая, похоже, описывает, почему элемент кэша не обновляется после того, как по умолчанию 10 минут:
Кэш-записи тайм-аута, однако есть вероятность, что повторяющиеся запросы приложений сохраняют существующую запись кэша для максимальное время жизни записи в кэше.
Я не совсем уверен, что в нашем коде вызывало это (повторяющиеся запросы), но разрешение, которое сработало для нас, заключалось в том, чтобы вырезать значение LsaLookupCacheExpireTime
из кажущегося непристойным дефолтом в течение 1 недели всего за несколько часов, Это, для нас, уменьшает вероятность того, что пользователь будет воздействовать на реальный мир, по существу, на ноль, и в то же время не вызывает чрезмерного количества поисков SID-имен против наших серверов каталогов. Еще лучшее решение IMO было бы, если бы приложения искали информацию пользователя по SID вместо сопоставления пользовательских данных с текстовым именем входа. (Обратите внимание, поставщики! Если вы полагаетесь на аутентификацию AD в своем приложении, вам нужно поместить SID в свою базу данных аутентификации!)