Я использую клиент CAS Java 3.4.1 и сервер 5.3 CAS.
Как я понимаю, после успешной аутентификации клиент CAS добавляет данные в сеанс клиентского приложения. Теперь при каждом запросе клиент CAS проверяет эти данные в сеансе и, если они верны, поток запросов продолжается (запрос на сервер CAS не поступает). Но если сеанс отсутствует или атрибут CAS (_const_cas_assertion_) отсутствует в сеансе, тогда клиент CAS отправляет запрос серверу CAS, чтобы убедиться, что пользователь аутентифицирован. Теперь по этому запросу сервер CAS обновляет свою последнюю использованную метку времени TGT, а тайм-аут TGT продлевается.
В моем случае время окончания сеанса клиентского приложения ie (JSESSIONID) истекает, когда сессия заканчивается (например, браузер закрыт). Но когда срок действия TGT истекает, скажем, через 10 часов, а пользователь не закрывает свой браузер в течение 10 часов, запрос к серверу CAS не поступает, и срок действия TGT не продлевается. Но если пользователь открывает приложение client2 через 5 часов, то выполняется запрос к серверу CAS, и срок действия TGT увеличивается на 10 часов. Это означает, что SLO-запрос отправляется приложению client1 через 15 часов.
Мой вопрос заключается в том, как заставить клиента обновлять временную метку TGT, использовавшуюся в последний раз, когда он использует только приложение client1, не очищая сеанс готовки клиента ie или заставить клиента иначе вызвать аутентификацию на сервере CAS снова? Я хочу обновить отметку времени последнего использования TGT, если клиентское приложение открывается (и используется) и не закрывается в течение 10 часов, поэтому клиент не будет отправлять SLO-запрос через 10 часов (поскольку время последнего использования TGT составляет 10 часов go) .
Другими словами, как расширить использование TGT, когда клиент использует приложение без очистки сеанса?
Очистка сеанса недопустима, потому что тогда AuthenticationFilter клиента CAS инициирует аутентификацию, которая перенаправит браузер клиента на сервер CAS, и это перенаправило бы его обратно в клиентское приложение. Он будет перенаправлен обратно на ту же страницу, но состояние просмотра клиентов будет потеряно (например, в компоненте JSF ViewScoped).