2013-05-17 82 views
4

我目前有一個應用程序,我正在使用雲(Jelastic)。我已將SSL證書添加到我的雲環境中,並希望能夠在某些頁面上使用https。我已經實現了這樣做的以下方法:Grails Spring Security secureChannel不重定向https?

方法1:

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

方法2:

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

grails.plugins.springsecurity.secureChannel.useHeaderCheckChannelSecurity = true 
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' 

因此,對於方法1這部分工作原理,當你去在HTTP索引頁面,然後嘗試去登錄頁面,你會看到一條錯誤消息,說:

Firefox has detected that the server is redirecting the request for this address in a way that will never complete. 

然而,方法2似乎根本不起作用,當我轉到HTTP上的登錄頁面時,它並沒有像我期望的那樣重定向我,並且似乎只是對HTTP很奇怪。

這個解決方案是由Jelastic託管的,因爲我不知道這可能會導致一些問題,但提供的任何幫助都會很好。

在此先感謝

+0

你在哪個應用程序服務器上運行它? – allthenutsandbolts

+0

Jelastic Tomcat 6 Java 6 – user723858

+0

兩個配置思路:1)確保你的'grails.serverURL'配置設置被正確定義2)'grails.plugins.springsecurity.portMapper.httpPort'和'... httpsPort'的默認值是8080和8443,它們在默認開發環境中工作正常,但通常必須在測試/生產中被覆蓋。 –

回答

1

我用下面的配置部署到PROD服務器。然後它開始在https上。我正在使用jdk 1.8和Tomcat 8.

grails.plugin.springsecurity.portMapper.httpPort = 80 
grails.plugin.springsecurity.portMapper.httpsPort = 443 
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' 
] 
相關問題