【发布时间】:2015-09-24 22:35:20
【问题描述】:
我是使用 CAS 的初学者。我的 CAS 服务器已启动并在端口 8443(安全 HTTP 层)上运行。我还制作了两个应用程序——JAVA 客户端(我自己的 JAVA 客户端)和 PHP 客户端(CAS 官方提供),用于测试我的 CAS 服务器。我可以为两个客户端使用单点登录。我还在 CAS 属性文件中启用了单点注销。我当前的 CAS 版本是 4.0.0,我使用的是 Apache Tomcat 版本 8.0.23
我在 JAVA Client
的 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 应用程序会话。
所以经过大量研究后,我遇到了this,我成功地实现了退出功能。但我不想使用通用会话数据库。
在官方documentation of CAS中提到:
CAS 直接向服务发送 HTTP POST 消息(反向通道通信):这是向服务执行通知的传统方式。
为 SLO 配置 CAS 时,它会尝试向在 SSO 会话期间请求向 CAS 进行身份验证的每个应用程序发送注销消息。
但我无法理解如何获取 SLO 消息,因为在注销应用程序期间我没有收到任何 POST 请求(在使用 firebug 进行跟踪时)。所以谁能帮我执行单点注销。
提前致谢。
【问题讨论】:
标签: single-sign-on logout cas jasig