3

去年围绕同一主题提出了一些问题:

使用 ssl 在 Heroku 上的 Grails 应用程序

grails - spring-security-core 安全通道导致重定向循环(在 Heroku 上)

grails - 在 Heroku 上测试 spring-security-core 安全通道的简单应用程序

但当时似乎没有令人满意的答案出现。

我正在使用 Spring 安全插件 (1.2.7.3) 在 heroku 上运行 2.24 Grails 应用程序。

尝试使用:

 grails.plugins.springsecurity.secureChannel.definition = [
 '/myAccount/**':         'REQUIRES_SECURE_CHANNEL',
 ]

导致该 url 映射发生重定向循环。

我的 Config.groovy 包含:

  grails.plugins.springsecurity.secureChannel.useHeaderCheckChannelSecurity = true#

在上面链接的一个问题中,伯特提到

 grails.plugins.springsecurity.portMapper.httpPort
 grails.plugins.springsecurity.portMapper.httpPort

可能需要更改,但我在任何地方都找不到任何文档来建议 Heroku 应该使用哪些端口 - 我尝试将 80 用于 http,443 用于 https,但遇到了同样的问题。

有没有人在任何时候成功地完成了这项工作?

4

1 回答 1

2

看起来这归结为 Spring Security 插件在“x-forwarded-proto”时使用了错误的大小写

 grails.plugins.springsecurity.secureChannel.useHeaderCheckChannelSecurity = true 

已设置。

将此添加到我的 config.groovy 解决了这个问题

grails.plugins.springsecurity.secureChannel.useHeaderCheckChannelSecurity = true
grails.plugins.springsecurity.portMapper.httpPort = 80
grails.plugins.springsecurity.portMapper.httpsPort = 443
grails.plugins.springsecurity.secureChannel.secureHeaderName = 'X-FORWARDED-PROTO'
grails.plugins.springsecurity.secureChannel.secureHeaderValue = 'http'

grails.plugins.springsecurity.secureChannel.insecureHeaderName = 'X-FORWARDED-PROTO'
grails.plugins.springsecurity.secureChannel.insecureHeaderValue = 'https'
于 2013-12-16T14:51:09.887 回答