Spring-security-cas插件单点注销无法正常工作

时间:2014-04-08 20:16:28

标签: grails spring-security logout cas spring-security-cas

我对grails非常陌生,我正在使用Spring-Security-Core和Spring-Security-CAS插件开发应用程序。

单点登录按预期工作,但单点登出时遇到问题。

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

例如: 通过cas登录登录app1 通过cas票证验证登录app2 从app1退出 - > app1和cas会话已关闭但app2仍然已登录(应在此处注销)

任何人都知道如何解决它?


UPDATING

当我登录我的两个应用程序并尝试从一个注销时,我可以在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

感谢

2 个答案:

答案 0 :(得分:0)

您是否已设置afterLogoutUrl参数?它在从grails进行相应的注销后管理cas logout。

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

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

有关详细信息,请参阅单点注销

下的CAS plugin docs

答案 1 :(得分:0)

显然,spring-security-core Grails插件中的一个模糊功能与单点登出冲突,如CAS Java客户端中实现的那样。

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

有一个简单的解决方法,只需在配置中禁用隐藏功能:

grails.plugin.springsecurity.seSessionFixationPrevention = false