在CAS

时间:2015-07-08 14:05:48

标签: single-sign-on logout saml cas jasig

我是使用CAS的初学者,我在我的一个项目中使用它来使用其单点登录服务。直到现在我已经实现了单点登录,我有一个JAVA客户端和一个PHP客户端。但是,为了使用单点注销功能,我根据CAS documentation配置了我的运行CAS。我已经完成了工作CAS的deployerConfigContext.xml中的所有更改。我的CAS正在运行,但在注销时它没有显示任何SAML注销请求。我正在使用由我制作的官方PHP客户端和Java客户端。我想这可能是由于这些线路我无法在客户端进行配置。

  

通过logoutType属性在服务级别配置通知的方式(后台或前台通道)。默认情况下,此值设置为LogoutType.BACK_CHANNEL。

我无法通过这一行了解实际上我必须将Logouttype设置为BACK_CHANNEL,如果是我的客户端,那么为什么默认情况下将其设置为BACK_CHANNEL,因为任何人都可以创建客户端。 / p>

非常感谢任何帮助。 在此先感谢。

1 个答案:

答案 0 :(得分:1)

查看jasig文档:http://jasig.github.io/cas/development/installation/Logout-Single-Signout.html

  

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

     

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

     

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

     

CAS使用消息和RelayState参数(前端通道通信)将服务重定向(HTTP 302)到服务:此功能是   灵感来自SAML SLO,如果是客户端应用程序,则需要它   由多个服务器组成并使用会话亲和性。预期的   CAS客户端的行为是使应用程序Web无效   会话并使用RelayState重定向回CAS服务器   参数。

重要的部分:

  

使用警告!

     

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

因此,您的SSO服务器直接向应用程序发送请求。验证者认识到此请求是特殊请求并注销引用的用户。

更新:

看看以下链接: https://wiki.jasig.org/display/casum/single+sign+out

https://github.com/Jasig/cas/blob/6c3df3a5f42d2d8b771ba773aeda3ba5a4c525e3/cas-server-webapp/src/main/webapp/WEB-INF/spring-configuration/applicationContext.xml

https://github.com/Jasig/cas/blob/6c3df3a5f42d2d8b771ba773aeda3ba5a4c525e3/cas-server-core/src/main/java/org/jasig/cas/logout/LogoutManagerImpl.java

您是否在applicationContext中意外删除或覆盖了logoutManager声明?在运行的spring上下文中是否有一个logoutManager bean?

我首先在handleLogoutForSloService,performBackChannelLogout和performLogout方法中设置LogoutManagerImpl.java的断点。

他们被叫了吗?

你能跨过吗?

是否调用了performBackChannelLogout?

performBackChannelLogout中的this.httpClient.sendMessageToEndPoint(msg)是否成功? 如果您登录到2个服务,则应使用两个服务URL调用performBackChannelLogout两次。