当前位置: 首页 > 知识库问答 >
问题:

“Spring发生了什么?”http://...../login“而不是”https://...../login"

乐钱青
2023-03-14

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

当我浏览到主页时,主页会加载一个登录按钮。在点击登录按钮时,发生了重定向到超文本传输协议://....../登录(/登录是默认的sso登录路径)由于我的应用程序服务是https而已,超文本传输协议url不工作。

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

我在这里发现了一个类似的问题

共有1个答案

蒋浩
2023-03-14

当您的Tomcat服务器位于代理之后时,就会发生此问题。HTTPS请求在代理处终止,然后代理使用HTTP协议与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靴

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类的configure方法中添加以下行:

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

有关官方信息,请访问此页面。

 类似资料:
  • 我使用的是spring-boot:1.3.3、spring-hateoas:0.19.0和spring-data-rest-core:2.4.4。 这是Spring-Hateoas提供的内容的例子。过了一段时间,我将我的应用程序切换到SSL。

  • 问题内容: 用户注销后,我用于生成重定向URL: 但是,当我将页面更改为https连接时,仍然给我http。 我想明确地要求在网址开头添加https。 你能指出我该如何更改吗?我看了看Flask文档,没有运气。 问题答案: 使用Flask 0.10,将提供比包装更好的解决方案url_for。如果你查看https://github.com/mitsuhiko/flask/commit/b5069d0

  • 问题内容: 用户注销后,我用来生成重定向URL: 但是,当我将页面更改为 https 连接时,仍然给我 http 。 我想明确地要求在网址开头添加 https 。 您能指出我该如何更改吗?我看了看Flask文档,没有运气。 问题答案: 使用Flask 0.10,将提供比包装更好的解决方案。如果您查看https://github.com/mitsuhiko/flask/commit/b5069d07

  • 在GitHub站点上有一个链接。。。 https://help.github.com/articles/generating-ssh-keys ... 它说。。。 如果您决定不使用推荐的HTTPS方法,我们可以使用SSH密钥在您的计算机和GitHub之间建立安全连接。下面的步骤将引导您生成SSH密钥,然后将公钥添加到GitHub帐户。 为什么HTTPS是推荐的方法?SSH方法中是否存在某种安全缺陷

  • 我的eclipse安装始终使用https协议下载存储库结构。问题是我的合作代理不允许我在这个url上使用https。如何强制m2e使用http? 我尝试了m2e的不同外部maven安装,但没有成功。只有在使用CLI中的外部maven(使用http)时,它才起作用。

  • 我正在尝试构建react原生android应用程序,作为一种依赖,我看到我有gradle,但它无法在构建时加载。错误消息: 问题很明显,我坐在公司代理后面,阻止任何像这样的错误HTTPS连接。所以我的问题是:如何强制gradle使用HTTP加载这些文件?这些属性应该放在哪里(哪一个gradle文件,即gradle.properties)? P. S.我已经在gradle属性文件中设置了这些: 任何