Утилита SingleSignOutHttpSessionListener при использовании SingleSignOutFilter

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

@Bean
public FilterRegistrationBean singleSignOutFilterRegister() {
    FilterRegistrationBean registration = new FilterRegistrationBean();
    SingleSignOutFilter filter = new SingleSignOutFilter();
    Map<String, String> map = new HashMap<String, String>();
    map.put("casServerUrlPrefix", this.logoutUrl);
    registration.setInitParameters(map);
    registration.setFilter(filter);
    registration.setEnabled(true);
    registration.setOrder(1);
    return registration;
}

@EventListener
public SingleSignOutHttpSessionListener singleSignOutHttpSessionListener(HttpSessionEvent event) {
    return new SingleSignOutHttpSessionListener();
}

Я сделал это, потому что в каждом уроке, который я прошел, они говорили, что нужно ставить SingleSignOutFilter и SingleSignOutHttpSessionListener. Так что это работает, но, глядя глубже в каждый из этих классов, я не понимаю полезности / цели / значения SingleSignOutHttpSessionListener. Если я удалю его, он все равно будет работать нормально, но я вижу в этом forum, что иногда сеанс не уничтожается фильтром.

У меня вопрос: как это может случиться, когда это может случиться и как воспроизвести это, чтобы проверить?


person Neyt    schedule 15.10.2018    source источник


Ответы (1)


как это может случиться, когда это может случиться и как воспроизвести это для проверки?

На форуме говорится:

Сессии не всегда уничтожаются фильтром (т.е. они заранее становятся недействительными или кто-то не выходит из CAS). Слушатель обрабатывает эту ситуацию.

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

person Misagh Moayyed    schedule 16.10.2018