프로젝트에서 Grails (2.2.2)를 사용하고 있으며 애플리케이션이 https 리디렉션 대신 바람직하지 않은 http 리디렉션을 실행합니다.HTTPS 프로토콜을 사용하여 리다이렉트 전용 Grails/Weblogic
현재 Oracle Weblogic 앞에 F5로드 밸런서가 있습니다. F5가 우리의 SSL을 Weblogic에서 내리고 있습니다. F5는 https 요청 만 허용하고 Weblogic은 HTTP 요청 만 허용합니다.
My Grails 프로젝트는 스프링 보안 및 스프링 시큐리티 CAS 플러그인을 사용합니다.
일반적으로 CAS 로그인 성공시 문제가 발생합니다. Grails는 항상 HTTP 리디렉션을 실행하는 것으로 보입니다.
내 serverURL은 모든 CAS 구성 변수를 HTTPS로 지정합니다. like
grails.serverURL = "https://example.com/${appName}"
강제로 GRAPS/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'
또한, 동작이 봄 보안/봄 CAS 플러그인과 관련이있을 수 있습니다 것 같아 프로토콜을 준수하지 않음
j_spring_security_check 이후에 발생하는 리디렉션은 https 리디렉션 대신 항상 http 리디렉션을 반환합니다. F5 서버에서 HTTP 요청을 허용하지 않기 때문에 문제가 발생합니다. I.E. 구성 CAS 플러그인에 대한
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/
:
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/'
}
이전에는이 구성에 별다른 행운이 없었으며, Weblogic이기 때문에 헤더를 'WL-Proxy-SSL'로 변경했습니다. Grails 레벨에서 프로토콜을 사용하여 아무 것도하지 않아도됩니다. 로드 밸런서가 내 SSL 연결을 보장하기 때문에.비록 내가 grails 어플리케이션에서 모든 것을 HTTP처럼 실행했다 할지라도, 모든 것이 상대적인 것이므로 중요하지 않아야하지만, 그것은 일어나지 않는 것 같습니다. – legomania
grails.plugin.springsecurity.secureChannel.definition = [ '/ **': 'REQUIRES_SECURE_CHANNEL' ]가 완벽하게 작동했습니다. – Neoecos