Единый выход сервера CAS с использованием сервлета Java

1

Я пытаюсь реализовать CAS Single Sign Out с помощью Java Servlet и фильтровать сопоставление в web.xml.
Фильтр в web.xml выглядит примерно так.

<filter>
   <filter-name>CAS Single Sign Out Filter</filter-name>
   <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
  </filter>

<listener>
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>

<filter-mapping>
   <filter-name>CAS Single Sign Out Filter</filter-name>
   <url-pattern>/out</url-pattern>
</filter-mapping>

И на схеме '/out' url, вызывая Java-сервлет, который состоит из метода session.invalidate() и после этого перенаправляет cas/logout/. Но все же я не могу выйти из системы правильно.

Это мой журнал:

DEBUG [http-bio-8080-exec-10] (HashMapBackedSessionMappingStorage.java:46) - Attempting to remove Session=[]
DEBUG [http-bio-8080-exec-10] (HashMapBackedSessionMappingStorage.java:55) - No mapping for session found.  Ignoring.

Пожалуйста помоги. Заранее спасибо.

Теги:
servlets
cas
web.xml
jasig

1 ответ

0

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

  • 0
    Спасибо, сэр, за ответ на мой вопрос. Я точно так и делаю, как вы сказали. Я использую session.invalidate (), а затем перенаправляю на URL-адрес выхода из URL-адреса cas с помощью response.sendRedirect («URL выхода из CAS-сервера»); Его успешно перенаправить на URL выхода из казино. Но когда я нажимаю на кнопку входа, он снова может войти в систему.
  • 0
    Я делаю что-то похожее на @iamrameshkr и получаю тот же результат. Может быть, мои ожидания ошибочны? Я думал, что если я добавлю фильтр, он автоматически сделает недействительным сеанс на сервере CAS (например, при проверке токена). casServerUrlPrefix для чего же casServerUrlPrefix параметр фильтра casServerUrlPrefix ?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню