【发布时间】: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}")。使会话无效是关键。也许插件可以为您执行此操作?
标签: grails spring-security logout cas spring-security-cas