gpt4 book ai didi

Spring重定向发生在 "http://...../login"而不是 "https://...../login"

转载 作者:行者123 更新时间:2023-12-02 23:25:21 32 4
gpt4 key购买 nike

我已经部署了由 spring boot 应用程序使用 oauth2 生成的 war 文件,以便使用 Azure 应用服务进行单点登录(仅限 https)。

当我浏览主页时,主页会加载一个登录按钮。单击登录按钮时,会发生重定向到“http://..../login”(/login 是默认的 sso 登录路径)由于我的应用程序服务仅是 https,因此 http url 不起作用。

我已经尝试了application.property文件中的redirect_uri设置,但没有帮助。有人遇到过这个问题吗?怎么解决?

我发现了类似的问题here

最佳答案

当您的 Tomcat 服务器位于代理后面时,就会出现此问题。 HTTPS 请求在代理处终止,然后代理使用 HTTP 协议(protocol)与 Tomcat 服务器进行通信。如果您将代码部署在 Azure(应用服务)等云提供商上,您将面临这个问题。

对于遇到此问题的任何人,解决方案如下:

在 application.properties 文件中,添加以下内容。注意:某些属性在 Spring Boot 2.* 版本中具有不同的名称。

security.oauth2.client.pre-established-redirect-uri=https://yourappurl.net/login
security.oauth2.client.registered-redirect-uri=https://yourappurl.net/login
security.oauth2.client.use-current-uri=false
server.tomcat.remote-ip-header=x-forwarded-for
server.tomcat.protocol-header=x-forwarded-proto
server.tomcat.use-relative-redirects=true
server.use-forward-headers=true
server.tomcat.internal-proxies=.*

在您的 SpringBootApplication 类中,添加以下 bean。在 Spring Boot <= 2.1.x 中,您必须提供 ForwardedHeaderFilter-Bean。从 Spring Boot 2.2.0 开始,您不必再这样做了。

import org.springframework.core.Ordered;
import org.springframework.web.filter.ForwardedHeaderFilter;
@Bean
FilterRegistrationBean<ForwardedHeaderFilter> forwardedHeaderFilter() {
final FilterRegistrationBean<ForwardedHeaderFilter> filterRegistrationBean = new FilterRegistrationBean<ForwardedHeaderFilter>();
filterRegistrationBean.setFilter(new ForwardedHeaderFilter());
filterRegistrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE);
return filterRegistrationBean;
}

在 AppConfiguration 类的配置方法中添加以下行:

http.requiresChannel().anyRequest().requiresSecure();

官方信息请访问this page .

关于Spring重定向发生在 "http://...../login"而不是 "https://...../login",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64403718/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com