我是使用 CAS 的初学者。我的 CAS 服务器已启动并在端口 8443(安全 HTTP 层)上运行。我还制作了两个应用程序——JAVA 客户端(我自己的 JAVA 客户端)和 PHP 客户端(CAS 官方提供),用于测试我的 CAS 服务器。我可以为两个客户端使用单点登录。我还在 CAS 属性文件中启用了单点注销。我当前的 CAS 版本是4.0.0,我使用的是 Apache Tomcat 版本8.0.23
我为JAVA 客户端的 web.xml 中的 Sign Out 添加了以下依赖项
<filter>
<filter-name>CAS Single Sign Out Filter</filter-name>
<filter-class> org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS Single Sign Out Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class> org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
但是在执行单点注销时,当我注销 PHP 应用程序时,我无法注销已经打开的 JAVA 应用程序。这意味着从 PHP 应用程序注销时不会破坏我现有的 JAVA 应用程序会话。
因此,经过大量研究后,我发现了这一点,并且成功实现了注销功能。但我不想使用通用的会话数据库。
在CAS的官方文档中提到:
CAS 直接向服务发送HTTP POST消息(反向通道通信):这是向服务执行通知的传统方式。
为 SLO 配置 CAS 时,它会尝试向在 SSO 会话期间向 CAS 请求身份验证的每个应用程序发送注销消息。
但我无法理解如何获取SLO消息,因为在注销应用程序期间我没有收到任何 POST 请求(同时使用 firebug 进行跟踪)。所以任何人都可以帮我执行单点注销。
提前致谢。