Безопасный канал Grails Spring Security не перенаправляет https?

В настоящее время у меня есть приложение, над которым я работаю, которое я использую в облаке (Jelastic). Я добавил SSL-сертификаты в свою облачную среду и теперь хочу использовать 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, как я упоминал, поэтому не уверен, что это может вызвать некоторые проблемы, но любая предложенная помощь была бы отличной.

заранее спасибо


person user723858    schedule 17.05.2013    source источник
comment
На каком сервере приложений вы его запускаете?   -  person allthenutsandbolts    schedule 17.05.2013
comment
Jelastic Tomcat 6 Java 6   -  person user723858    schedule 17.05.2013
comment
Две мысли о конфигурации: 1) убедитесь, что ваш параметр конфигурации grails.serverURL определен правильно 2) значения по умолчанию для grails.plugins.springsecurity.portMapper.httpPort и ...httpsPort — 8080 и 8443, которые отлично работают в средах разработки по умолчанию, но часто должны быть переопределены в тестовой / рабочей среде.   -  person Andrew    schedule 17.05.2013
comment
Вы настроили tomcat для запуска https? Я знаю, что вам нужно настроить tomcat для работы на порту 8443, а затем перенаправить трафик на порт 443. Прежде чем развернуть это в облаке, вы пытались запустить это приложение локально и посмотреть, сможете ли вы запустить его с помощью https?   -  person allthenutsandbolts    schedule 17.05.2013
comment
Jelastic использует порт 8743 для HTTPS-запросов. Та же проблема обсуждалась в сообществе Jelastic здесь: community.jelastic.com/index.php/topic/   -  person Daria    schedule 21.05.2013
comment
у вас случайно нет ответа на этот вопрос? У меня очень похожая проблема в AWS (я знаю, что дело сейчас заморожено, но кто знает).   -  person peveuve    schedule 19.05.2015


Ответы (1)


Я использовал следующую конфигурацию для развертывания на рабочем сервере. Потом началось по 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'
]
person user3877963    schedule 24.07.2015