Grails Spring security cas插件单一注销不工作

Grails Spring security cas插件单一注销不工作,grails,spring-security,logout,cas,spring-security-cas,Grails,Spring Security,Logout,Cas,Spring Security Cas,我对grails非常陌生,我正在开发一个带有SpringSecurityCore和SpringSecurityCAS插件的应用程序 单点登录按预期工作,但单点注销给我带来了麻烦 我有两个应用程序,当我登录cas或任何应用程序时,我可以访问这两个应用程序而不会出现任何问题。但是,当我尝试使用app1/logout或app2/logout注销时,只有cas和调用/logout的应用程序会话关闭,并且我仍然能够浏览其他应用程序 例如: 通过cas登录记录app1 通过cas票证验证记录app2 从ap

我对grails非常陌生,我正在开发一个带有SpringSecurityCore和SpringSecurityCAS插件的应用程序

单点登录按预期工作,但单点注销给我带来了麻烦

我有两个应用程序,当我登录cas或任何应用程序时,我可以访问这两个应用程序而不会出现任何问题。但是,当我尝试使用app1/logout或app2/logout注销时,只有cas和调用/logout的应用程序会话关闭,并且我仍然能够浏览其他应用程序

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

有人知道如何修复它吗


更新 当我登录两个应用程序并尝试从其中一个注销时,我可以在localhost\u access\u log.txt中看到这些POST调用:

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(应用程序)

欢迎提出任何建议


谢谢

您是否已经设置了
afterLogoutUrl
参数?它在相应地从grails注销后管理cas注销

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

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

有关详细信息,请参见Single Sign Out(单点注销)

显然,spring security核心Grails插件中有一个模糊的特性,与CAS Java客户端中实现的单点注销冲突

这被记录在一个显然没有人对解决问题感兴趣的文档中

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

grails.plugin.springsecurity.seSessionFixationPrevention = false

我使用CAS,但不是通过插件-通过自定义库。我们遇到了类似的问题,必须通过应用程序中的控制器重定向注销调用,该控制器执行以下操作:
session.invalidate()
redirect(url:${params.casUrl}?url=${params.appUrl}”)
。使会话无效是关键。也许这个插件有一个选项可以帮你做到这一点?谢谢,它可以帮助我在afterLogoutUrl中找到一个打字错误。afterLogoutUrl是单次注销工作所必需的吗?我在两个应用程序中都设置了它们,但与原始海报有相同的问题。