Single sign on 为跨域应用程序实施CAS单点注销

Single sign on 为跨域应用程序实施CAS单点注销,single-sign-on,logout,cas,jasig,Single Sign On,Logout,Cas,Jasig,我是使用CAS的初学者。我的CAS服务器已在端口8443(安全HTTP层)启动并运行。我还制作了两个应用程序——JAVA客户端(我自己的JAVA客户端)和PHP客户端(由CAS正式提供),用于测试我的CAS服务器。我可以为两个客户端使用单点登录。我还在CAS属性文件中启用了单点注销。我当前的CAS版本是4.0.0,我正在使用ApacheTomcat版本8.0.23 我已经为JAVA客户端的web.xml注销添加了以下依赖项 <filter> <filter-name&

我是使用CAS的初学者。我的CAS服务器已在端口8443(安全HTTP层)启动并运行。我还制作了两个应用程序——JAVA客户端(我自己的JAVA客户端)和PHP客户端(由CAS正式提供),用于测试我的CAS服务器。我可以为两个客户端使用单点登录。我还在CAS属性文件中启用了单点注销。我当前的CAS版本是4.0.0,我正在使用ApacheTomcat版本8.0.23

我已经为JAVA客户端的web.xml注销添加了以下依赖项

 <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>

CAS单签出筛选器
org.jasig.cas.client.session.SingleSignOutFilter
CAS单签出筛选器
/*
org.jasig.cas.client.session.SingleSignOutHttpSessionListener
但在执行单点注销时,当我注销PHP应用程序时,我无法注销已经打开的JAVA应用程序。这意味着从PHP应用程序注销时不会破坏现有的JAVA应用程序会话

所以经过大量的研究,我发现我能够成功地实现注销功能。但我不想使用公共会话数据库

官方文件中提到:

CAS直接向服务发送HTTPPOST消息(反向通道通信):这是向服务执行通知的传统方式

当CAS配置为SLO时,它会尝试向每个在SSO会话期间向CAS请求身份验证的应用程序发送注销消息

但我无法理解如何获取SLO消息,因为在注销应用程序期间,我没有收到任何POST请求(使用firebug进行跟踪)。所以,任何人都可以帮助我执行单点注销

提前感谢。

如以下网址所示:

当CAS会话结束时,它会通知每个服务SSO会话不再有效,并且依赖方需要使其自己的会话无效

这可以通过两种方式实现:

  • CAS直接向服务发送HTTP POST消息(反向通道通信)):这是向服务执行通知的传统方式
  • CAS使用消息和RelayState参数(前端通道通信)重定向(HTTP 302)到服务:此功能受SAML SLO启发,如果客户端应用程序由多个服务器组成并使用会话关联,则需要此功能。CAS客户端的预期行为是使应用程序web会话无效,并使用RelayState参数重定向回CAS服务器
  • 使用警告

    此时前通道SLO仍处于试验阶段。

    (重点由我补充)

    如果您在浏览器上看不到相应的活动,您可能正在使用选项#1,其中POST消息在后端发送


    SLO比SSO复杂得多…

    在处理注销请求时,$\u POST['logoutRequest']是空的。因此,我无法为我的任一客户接收SLO消息。那么,我应该如何为JAVA和PHP客户端检索这个SLO消息呢