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