【发布时间】:2014-12-19 01:07:21
【问题描述】:
我们有一个基于 Java 1.6 和 Spring 3.0.3 的应用程序,它使用 Spring Security 3.0.5,并使用带有 RestEasy 2.1.0 的 Spring Web 实现 REST API。 我需要将此应用程序(服务器)放在代理后面,该代理会将来自 REST API 客户端应用程序的 HTTPS 请求流量转换为 HTTP 流量。此更改为登录请求创建了“跨域”场景:客户端发送 HTTPS 登录请求,服务器使用 HTTP 的重定向 URL 进行响应。目前它的回应是:
”http://192.168.0.10:8090/index.html;jsessionid=64FD79...86D”,
我需要的是:
”/index.html;jsessionid=64FD79...86D”
我们提供了使服务器响应“相对”URL 而不是“绝对”URL 的解决方案。所以我尝试在这里实现与描述情况类似的东西:
我已经使用 contextRelative="true" 设置了 RedirectStrategy bean,并在我的 LoginSuccessHandler 扩展类中覆盖了来自 AbstractAuthenticationTargetUrlRequestHandler 的 redirectStrategy 设置器,我看到 HttpServletResponse 对象的 redirectStrategy 属性按预期设置为 true。还是没有解决问题。
当使用 encodeRedirectURL("otherLogin") 更改 HttpServletResponse 对象的 redirectURLCC 属性时,也会设置类似
”http://192.168.0.10:8090/otherLogin”
这不是我需要的。我需要删除 URL 的整个协议+ipaddress 部分。响应对象的 URL 属性不可更改,因为它由 Filter 和 FilterChain 接口实现包装。
请提出任何想法。我想这种事情应该在 web.xml 或 auth-AplicationContext.xml 文件中解决,而不是在代码中。
最好的问候。
【问题讨论】:
标签: java spring spring-security resteasy