我正在使用受Spring Security SSO登录保护的Spring微服务(使用Cloudfoundry UAA).
部署在云上的微服务可通过HTTPS URL访问.由于HTTPS URL是ELB(负载均衡器/ Web服务器),因此对ELB的微服务的实际请求来自HTTP.因此Spring将用户重定向到登录页面时会在302 Location标题中生成HTTP URL而不是HTTPS URL.
以下是流程
Browser
->(https://mymicroservice.com) Unauthenticated request (Load balancer)
->(http://internal_lan_ip:someport) Microservice
-> 302 Location http://mymicroservice.com/login
-> Browser http://mymicroservice.com/login (failed)
In short it goes from HTTPS -> HTTP -> 302 HTTP (failed as ELB doesn't serve on HTTP)
以下是我的尝试
的x转发-原
由于负载均衡器也没有正确地将x-forwarded-proto填充到HTTPS,而是它给了我HTTP,我不能使用Spring的支持.
需要渠道HTTPS
它也不起作用,因为它导致Spring无限重定向,因为Spring从未收到来自ELB的HTTPS请求,尽管正确生成了HTTPS重定向URL.
拦截器/过滤器
使用ServletFilter检查响应头位置,如果存在,则用https://替换http://.
坦率地说,最后一个选项是我的最终选项,因为我不控制ELB配置.
现在的问题是