Spring-security-cas 插件单点注销不起作用

Posted

技术标签:

【中文标题】Spring-security-cas 插件单点注销不起作用【英文标题】:Spring-security-cas plugin Single Sign Out not working 【发布时间】:2014-05-21 18:05:26 【问题描述】:

我对 grails 很陌生,我正在开发一个带有 Spring-Security-Core 和 Spring-Security-CAS 插件的应用程序。

单点登录按预期工作,但单点退出有问题。

我有两个应用程序,当我登录 cas 或任何一个应用程序时,我可以毫无问题地访问这两个应用程序。但是,当我尝试使用 app1/logout 或 app2/logout 注销时,只有 cas 和调用 /logout 的应用程序会话关闭,我仍然可以通过其他应用程序导航。

示例: 通过 cas 登录登录 app1 通过 CAS 票证验证记录 app2 从 app1 注销 -> app1 和 cas 会话已关闭,但 app2 仍处于登录状态(应在此处注销)

有人知道如何解决它吗?


更新中

当我登录我的两个应用程序并尝试从其中一个应用程序中注销时,我可以在 localhost_access_log.txt 中看到这些帖子调用:

127.0.0.1 - - [10/Apr/2014:14:36:05 -0300] "GET /app/logout/index HTTP/1.1" 302 -
127.0.0.1 - - [10/Apr/2014:14:36:05 -0300] "GET /app/j_spring_security_logout HTTP/1.1" 302 -
0:0:0:0:0:0:0:1 - - [10/Apr/2014:14:36:05 -0300] "GET /cas/logout?service=http://localhost:8090/app/logout/afterLogout HTTP/1.1" 200 2039
127.0.0.1 - - [10/Apr/2014:14:36:05 -0300] "POST /app2/j_spring_cas_security_check HTTP/1.1" 200 -
127.0.0.1 - - [10/Apr/2014:14:36:05 -0300] "POST /app/j_spring_cas_security_check HTTP/1.1" 200 -
0:0:0:0:0:0:0:1 - - [10/Apr/2014:14:36:05 -0300] "GET /cas/images/confirm.gif HTTP/1.1" 200 958
0:0:0:0:0:0:0:1 - - [10/Apr/2014:14:36:05 -0300] "GET /cas/favicon.ico HTTP/1.1" 200 170

我认为注销我的两个应用程序就足够了,但 app2 没有注销,只有 app1 (app)

欢迎任何建议=D

谢谢

【问题讨论】:

我使用 CAS 但不是通过插件 - 通过自定义库。我们遇到了类似的问题,不得不通过我们应用程序中的控制器重定向我们的注销调用:session.invalidate()redirect(url:"$params.casUrl?url=$params.appUrl")。使会话无效是关键。也许插件可以为您执行此操作? 【参考方案1】:

你已经设置afterLogoutUrl参数了吗?它在从 grails 相应的注销后管理 cas 注销。

以下是我的一个应用程序的示例:

grails.plugins.springsecurity.logout.afterLogoutUrl = "https://$servercas/cas/logout?url=http://$servercas/mygrailsapp/"

有关详细信息,请参阅单点注销下的CAS plugin docs

【讨论】:

谢谢,它可以帮助我在 afterLogoutUrl 中找到拼写错误 单次注销需要 afterLogoutUrl 吗?我在两个应用程序中都设置了它们,但遇到了与原始海报相同的问题。【参考方案2】:

显然 spring-security-core Grails 插件中有一个不为人知的功能,它与在 CAS Java 客户端中实现的单点注销冲突。

这在bug from Jan 2011 中有记录,显然没有人有兴趣解决。

有一个简单的解决方法,只需禁用 Config 中的模糊功能:

grails.plugin.springsecurity.seSessionFixationPrevention = false

【讨论】:

以上是关于Spring-security-cas 插件单点注销不起作用的主要内容,如果未能解决你的问题,请参考以下文章

discuz新的单点论坛(不依赖UCenter)

基于Saml协议的Moodle单点登录的配置与实现

基于Saml协议的Moodle单点登录的配置与实现

基于Saml协议的Moodle单点登录的配置与实现

基于Saml协议的Moodle单点登录的配置与实现

基于Saml协议的Moodle单点登录的配置与实现