Как использовать Политику истечения срока действия билета в CAS, когда время окончания сеанса клиента ie истекает после завершения сеанса? - PullRequest
1 голос
/ 27 марта 2020

Я использую клиент 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).

1 Ответ

0 голосов
/ 30 марта 2020

Мой вопрос заключается в том, как я могу заставить клиента продлить тайм-аут TGT, когда он использует только приложение client1 без очистки сеанса повара клиента ie или если клиент снова вызовет аутентификацию на сервере CAS?

Вы не можете. Тайм-аут TGT является глобальным для развертывания CAS. Если одно приложение каким-то образом увеличит этот тайм-аут, это помешает и прервет то же правило политики / тайм-аута для других приложений, которые могут не захотеть этого расширения. Если для сервера CAS установлено время ожидания в 10 часов, это жесткая остановка, и сеанс завершится через 10 часов.

Как клиентское приложение, вы обычно не можете динамически изменять поведение сервера случайным образом. Это противоречило бы цели централизации, централизованного аудита, безопасности и т. Д. c и поведению других приложений, взаимодействующих с тем же сервером.

Я хочу продлить срок действия TGT, если открыто клиентское приложение ( и используется) и не закрывается через 10 часов, поэтому клиенту не будет отправлен запрос SLO по прошествии 10 часов.

Возможно, расширить фильтр SLO, чтобы не уничтожать приложение, если сеанс все еще активен, или удалите фильтр SLO из конфигурации вашего приложения, если вы не хотите участвовать в SLO ... или свяжитесь с администраторами вашего сервера CAS и обсудите с ними нюансы SLO.

...