我有一个在Amazon EC2中的tomcat上运行的应用程序。 http和https都可以使用。我只想使用https,这样当http://app.com被访问时,它将被重定向到https://app.com。
在使用spring的SpringSecurity中,它具有拦截器:
<sec:http auto-config='false'>
<sec:intercept-url pattern="/**" requires-channel="https"/>
</sec:http>
如何做到这一点?
我已经尝试过(以及其他修改)
grails.plugin.springsecurity.secureChannel.useHeaderCheckChannelSecurity = true
grails.plugin.springsecurity.portMapper.httpPort = 8080
grails.plugin.springsecurity.portMapper.httpsPort = 8443
grails.plugin.springsecurity.secureChannel.secureHeaderName = 'X-FORWARDED-PROTO'
grails.plugin.springsecurity.secureChannel.secureHeaderValue = 'http'
grails.plugin.springsecurity.secureChannel.insecureHeaderName = 'X-FORWARDED-PROTO'
grails.plugin.springsecurity.secureChannel.insecureHeaderValue = 'https'
grails.plugin.springsecurity.auth.forceHttps = true
grails.plugin.springsecurity.secureChannel.definition = [
'/**': 'REQUIRES_SECURE_CHANNEL'
]
但仍然没有成功。
最佳答案
我现在通过删除第一个配置使其工作
grails.plugin.springsecurity.portMapper.httpPort = 8080
grails.plugin.springsecurity.portMapper.httpsPort = 8443
grails.plugin.springsecurity.secureChannel.secureHeaderName = 'X-FORWARDED-PROTO'
grails.plugin.springsecurity.secureChannel.secureHeaderValue = 'http'
grails.plugin.springsecurity.secureChannel.insecureHeaderName = 'X-FORWARDED-PROTO'
grails.plugin.springsecurity.secureChannel.insecureHeaderValue = 'https'
grails.plugin.springsecurity.auth.forceHttps = true
grails.plugin.springsecurity.secureChannel.definition = [
'/**': 'REQUIRES_SECURE_CHANNEL'
]
并通过
grails run-app -https
在本地进行测试对于开发服务器,我只是在配置中将8080替换为80,将8443替换为443。
关于grails - Grails HTTP URL使用https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29669528/