我正在尝试在基于 spring 的应用程序中实现 CAS。我已经配置了 CAS 并从应用程序连接到 CAS,当我从 jar 运行应用程序时一切正常。 但是当我尝试将应用程序构建到 WAR 包时,SLO(单点注销)停止工作。当我单击注销时,我从应用程序和 CAS 注销,但我仍然登录到其他应用程序。
环境:
- WAR 和 CAS 都部署在本地运行的 tomcat 7 上,但按照文档中的建议,我将 localhost 更改为我的计算机名称。
- 我正在使用 cas-server-webapp-3.5.2.1 和 spring-boot-1.1.8.RELEASE
- 我禁用了 HTTPS,因此所有通信都在 HTTP 上运行
这是我第一次尝试集成 CAS,所以我有一些疑问: 这可能是个问题吗:
2015-04-01 11:21:37,807 WARN [org.jasig.cas.util.HttpClient] - <Error Sending me
ssage to url endpoint [http://mycomputername:8080/App1/j_spring_cas_securi
ty_check]. Error is [Server returned HTTP response code: 403 for URL: http://my
computername:8080/App1/j_spring_cas_security_check]>
我在运行 jar 时收到相同的消息,并且我已从两个应用程序中正确注销
在应用程序初始化时记录无信息:http://pastebin.com/DBW8fm1M
此外,当我转到 Tomcat Web 应用程序管理器 (mycomputername:8080/manager) 并使第二个应用程序的 session 过期时,我正确地从它注销,或者更确切地说,我无法再访问它,并且我被重定向到 CAS 中登录.
@编辑: Spring 安全:http://pastebin.com/K0BMVrLN
用于 war 部署的 App1 的属性
app.service.security=http://mycomputername:8080/App1/j_spring_cas_security_check
app.service.home=http://mycomputername:8080/App1/
cas.service.login=http://mycomputername:8080/cas/login
cas.service.logout=http://mycomputername:8080/cas/logout
cas.url.prefix=http://mycomputername:8080/cas/
app.admin.userName=admin@cas.com
最佳答案
使用 Spring Security
和 CAS
的注销步骤:
- 用户请求/j_spring_security_logout(在注销按钮的
href
中设置),这将记录用户 退出本地应用程序并将用户发送到注销成功 网址。 - 注销成功URL,你应该设置它
/j_spring_cas_security_logout
,为了退出所有 应用程序。 - 然后用户被重定向到 CAS 单点注销 URL
(
https://localhost:7443/cas/logout
)。 - 在 CAS 服务器端,CAS 单点注销 URL 然后提交
对所有 CAS 服务的单一注销请求。关于 CAS 服务
在这方面,JASIG 的
SingleSignOutFilter
通过以下方式处理注销请求 使原始 session 无效。 - 最后,你的
CASTGT
和Jsession
(对于 Spring)被销毁并进入 app2 在请求任何页面后你应该重定向到 CAS 登录页面
关于tomcat - 当我构建应用程序以对抗 SLO(单点注销)时停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29387952/