我已经使用oauth2部署了一个由Sping Boot 应用程序生成的war文件,以便使用Azure应用程序服务(仅限https)进行单点登录。
当我浏览到主页时,主页加载了一个登录按钮。单击登录按钮时,将重定向到“http://.../login”(/login是默认的sso登录路径)。由于我的应用程序服务仅支持https,因此http url不起作用。
我试过www.example.com文件中的redirect_uri设置application.property,但没有任何帮助。有人遇到过这个问题吗?如何解决?
我发现类似的问题提到here
2条答案
按热度按时间col17t5w1#
当您的Tomcat服务器位于代理服务器之后时会发生此问题。HTTPS请求在代理服务器处终止,然后代理服务器使用HTTP协议与您的Tomcat服务器通信。如果您将代码部署在Azure(App Service)等云提供商上,则会遇到此问题。
对于任何面临此问题的人,以下是解决方案:
在application.properties文件中,添加以下内容。注意:某些属性在 Boot 2.* 版本中具有不同的名称。
在你的SpringBootApplication类中,添加下面的bean。对于Spring Boot〈= 2.1.x,你必须提供一个ForwardedHeaderFilter-Bean。从Spring Boot 2.2.0开始,你就不再需要这样做了。
在AppConfiguration类的configure方法中添加以下行:
有关官方信息,请访问此页面。
balp4ylt2#
Ranbir已经很好地解释了有人会面临这个问题的用例。
我不需要在我的springboot项目中添加任何额外的属性,我只需要添加ForwardedHeaderFilter作为spring配置的一部分,并提到我希望这个过滤器作用于x-forwarded头的URL:
以下是一些有用的参考资料:https://tomgregory.com/spring-boot-behind-load-balancer-using-x-forwarded-headers/
https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#filters-forwarded-headers
https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/htmlsingle/#howto-enable-https