首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >security oauth2重定向uri在springboot升级到2.6.6之后没有使用https

security oauth2重定向uri在springboot升级到2.6.6之后没有使用https
EN

Stack Overflow用户
提问于 2022-05-31 09:01:43
回答 1查看 1.1K关注 0票数 1

最近,我将项目升级为SpringBoot 2.6.6,从2.1.3.RELEASE (后者反过来将spring安全性从5.1.4版本升级到5.6.2)。在我的项目中,我有authorization-code流,它对来自IDM的代码和令牌请求都使用重定向-uri。我注意到,令牌请求中使用的redirect-uri与最初用于授权代码请求的不同。唯一的区别是它将https替换为http

由于重定向URI中的不匹配,HTTP 400错误导致令牌请求失败。它在使用旧版本的spring /security时运行得很好。

另外,作为迁移到SpringBoot 2.6.6的一部分,我们被迫使用属性spring.security.oauth2.client.registration.foo.redirect-uri而不是spring.security.oauth2.client.registration.foo.redirect-uri-template,因为它已经过时了。

我配置了重定向-uri属性,如下所示

代码语言:javascript
运行
复制
spring.security.oauth2.client.registration.foo.redirect-uri={baseUrl}/login/oauth2/code/foo

但是,如果我将值更改为https://{baseHost}{basePort}{basePath}/login/oauth2/code/foo,它就能够获得令牌,并且在登录过程中没有问题。

你知道为什么它把这个方案改为http来交换令牌请求以换取授权代码吗?除了指定baseScheme之外,还有其他方法来使用https来设置它吗?

编辑:提供程序配置

代码语言:javascript
运行
复制
foo.base.url=https://fooauth.acme.com

spring.security.oauth2.client.provider.foo.authorization-uri=${foo.base.url}/v1/oauth/authorize
spring.security.oauth2.client.provider.foo.token-uri=${foo.base.url}/v1/oauth/token
spring.security.oauth2.client.provider.foo.user-info-uri=${foo.base.url}/v1/users/info
spring.security.oauth2.client.provider.foo.user-name-attribute=userName
spring.security.oauth2.client.provider.foo.logout-uri=${foo.base.url}/v1/oauth/logout?post_logout_redirect_uri=
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-08 10:51:48

最后,我可以通过遵循这个春季安全问题来解决这个问题。在这个答案中也有同样的描述。

我添加的bean如下所示

代码语言:javascript
运行
复制
@Bean
FilterRegistrationBean<ForwardedHeaderFilter> forwardedHeaderFilter() {
    final FilterRegistrationBean<ForwardedHeaderFilter> filterRegistrationBean = new FilterRegistrationBean<ForwardedHeaderFilter>();
    filterRegistrationBean.setFilter(new ForwardedHeaderFilter());
    filterRegistrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE);

    return filterRegistrationBean;
}

现在,我甚至不需要将{baseUrl}拆分成更精细的变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72444956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档