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 插件单点注销不起作用的主要内容,如果未能解决你的问题,请参考以下文章