tomcat - 当我构建应用程序以对抗 SLO(单点注销)时停止工作

标签 tomcat spring-security tomcat7 cas jasig

我正在尝试在基于 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]>

此外,当我转到 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 SecurityCAS 的注销步骤:

  1. 用户请求/j_spring_security_logout(在注销按钮的 href 中设置),这将记录用户 退出本地应用程序并将用户发送到注销成功 网址。
  2. 注销成功URL,你应该设置它 /j_spring_cas_security_logout,为了退出所有 应用程序。
  3. 然后用户被重定向到 CAS 单点注销 URL (https://localhost:7443/cas/logout)。
  4. 在 CAS 服务器端,CAS 单点注销 URL 然后提交 对所有 CAS 服务的单一注销请求。关于 CAS 服务 在这方面,JASIG 的 SingleSignOutFilter 通过以下方式处理注销请求 使原始 session 无效。
  5. 最后,你的 CASTGTJsession(对于 Spring)被销毁并进入 app2 在请求任何页面后你应该重定向到 CAS 登录页面

关于tomcat - 当我构建应用程序以对抗 SLO(单点注销)时停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29387952/

相关文章:

spring-security - 在 Spring Security SAML2 中自定义 OpenSaml4AuthenticationProvider

java - 使用 Spring Security 配置 Spring Boot 会使构建因引用缺少依赖项而失败

java - war 部署异常

java - liferay-maven-plugin 从 maven Liferay 6.2.5 (6.2 ga6) 部署 war

java - Tomcat Web 应用程序 - 指定 TransformerFactoryImpl 类不起作用

grails - 如何在集成测试中与其余客户端共享Spring Security session

java - 从 Jersey Rest 服务启动时,PhantomJS 返回黑色屏幕截图

tomcat - 如何在未安装 JRuby 且仅使用 Java 的 JRuby/Tomcat 部署中使用 Resque 应用程序运行 Ruby/Rails?

tomcat - 我的 Grails 部署到 Tomcat 容器有什么问题?

tomcat - 在运行时重新加载 tomcat 日志记录?