У меня есть некоторый код Java, который позволяет пользователям сбрасывать свои пароли, хранящиеся на сервере LDAP.Код выполняется как часть веб-приложения, работающего на Glassfish.
Проблема, с которой я сталкиваюсь, заключается в том, что после вызова операции смены пароля пользователь может впоследствии использовать любой пароль для доступа к приложению.
У меня есть модульный тест, который запускается непосредственно на сервере LDAP, и я могу убедиться, что пароль действительно изменился, и пользователь не может получить доступ, используя старый пароль.Проблема не на сервере LDAP.
Что я заметил, так это то, что если я перезапущу Glassfish после операции смены пароля, действителен только новый пароль (как и ожидалось).Я предполагаю, что Glassfish где-то кэширует учетные данные.
Что мне нужно установить в Glassfish (или, возможно, в моем web.xml), чтобы либо
- сказать Glassfish не делатькешировать учетные данные LDAP
- сбросить кеш паролей Glassfish
Заранее спасибо ....
ОБНОВЛЕНИЕ Проблема по-прежнему сохраняется.Я также подумал, что браузер может хранить эту информацию, но это не так.Я закрываю сеанс браузера, и оба пароля все еще работают в новом сеансе - даже с разными типами браузеров.Кстати, я не знаю, имеет ли это значение или нет, но это базовая аутентификация HTTP.
ОБНОВЛЕНИЕ Мы также используем функциональность единого входа, включенную в Glassfish.Начиная с этой статьи , похоже, что сеанс привязан к cookie в браузере, и, возможно, пользователь будет действителен до истечения срока действия cookie?Похоже, что куки связаны с сеансом.Все ближе к выяснению этого ...