gpt4 book ai didi

grails - 强制 Grails/Weblogic 仅使用 HTTPS 协议(protocol)重定向

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:25 25 4
gpt4 key购买 nike

我在一个项目中使用 Grails (2.2.2),我的应用程序发出了不需要的 http 重定向,而不是 https 重定向。

我们目前在 Oracle Weblogic 前面有一个 F5 负载平衡器。 F5 正在从 Weblogic 卸载我们的 SSL。 F5只接受https请求,Weblogic只接受http请求。

我的 Grails 项目使用了 Spring Security 和 Spring Security CAS 插件。

该问题通常发生在成功登录 CAS 时。 Grails 似乎总是发出 HTTP 重定向。

我的 serverURL 和所有 CAS 配置变量一样指定了 HTTPS。喜欢

grails.serverURL = "https://example.com/${appName}"

有没有办法强制 GRAILS/Weblogic 只发出 https 重定向?

编辑 #1 - 更多信息

我试过这样做但没有成功:

grails.plugin.springsecurity.secureChannel.useHeaderCheckChannelSecurity = true
grails.plugin.springsecurity.secureChannel.definition = [
'/**': 'REQUIRES_SECURE_CHANNEL'
]
grails.plugin.springsecurity.portMapper.httpPort = 80
grails.plugin.springsecurity.portMapper.httpsPort = 443
grails.plugin.springsecurity.secureChannel.secureHeaderName = 'WL-Proxy-SSL'
grails.plugin.springsecurity.secureChannel.secureHeaderValue = 'http'
grails.plugin.springsecurity.secureChannel.insecureHeaderName = 'WL-Proxy-SSL'
grails.plugin.springsecurity.secureChannel.insecureHeaderValue = 'https'

此外,该行为似乎与不遵守协议(protocol)的 Spring Security/Spring CAS 插件有关

在 j_spring_security_check 之后发生的重定向似乎总是返回一个 http 重定向而不是 https 重定向。这会产生一个问题,因为我们不允许 F5 服务器上的 http 请求。即

https://www.example.com/grailsapp/
->
https://www.casserver.com/cas/login?service=https%3A%2F%2Fwww.example.com%2Fgrailsapp%2Fj_spring_cas_security_check
-> https://www.example.com/grailsapp/j_spring_cas_security_check;jsessionid=f6T8RyDZ83Z2QQQlMQ7fGXvlrs05m9hTjlBkndD6stBh1s20v2ZH!-1677111548?ticket=ST-231-4Dl5PVDe4RRLpAW5CEXb-www.casserver.com
->
http://www.example.com/grailsapp/

CAS插件配置:

production {
grails.plugins.springsecurity.cas.loginUri = '/login'
grails.plugins.springsecurity.cas.serviceUrl = 'https://example.com/grailsapp/j_spring_cas_security_check'
grails.plugins.springsecurity.cas.serverUrlPrefix = 'https://casserver.com/cas'
grails.plugins.springsecurity.logout.afterLogoutUrl = 'https://casserver.com/cas/logout?url=https://example.com/grailsapp/'
}

最佳答案

我建议您查看 Spring Security 的 channel 安全设置。注意 documentation 中关于 F5s 和 SSL 的部分。 .

我怀疑您的配置中缺少以下内容:

grails.plugin.springsecurity.secureChannel.useHeaderCheckChannelSecurity = true

我还怀疑您没有通过设置强制您的应用程序始终在 SSL 下运行:

grails.plugin.springsecurity.secureChannel.definition = [
'/**': 'REQUIRES_SECURE_CHANNEL'
]

关于grails - 强制 Grails/Weblogic 仅使用 HTTPS 协议(protocol)重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23664835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com