首页 新闻 会员 周边 捐助

分布式多台服务器security.oauth2的token-info-uri配置

0
[已解决问题] 解决于 2020-07-07 16:07

场景:Spring cloud分布式项目,项目集成了gateway网关控制,现在项目过大需要分多台服务器部署项目。目前项目部署方式是:注册中心(eureka),网关(gateway),配置中心(config),认证中心(nursing-auth)使用(Spring.security.oauth2)技术,用户模块(opms-biz),这些项目在一台服务器(叫做A服务器吧),其他业务功能模块在其他服务器。现在所有的项目都已经成功注入到eureka中心了,但是在其他服务器请求获取认证中心的用户token数据的时候提示:A服务器没有该实例。没有园豆了,请各大佬帮忙看看,感谢!

学者人生的主页 学者人生 | 初学一级 | 园豆:4
提问于:2020-07-03 10:41
< >
分享
最佳答案
0

已经自己解决,这里就直接写工程名字就好

学者人生 | 初学一级 |园豆:4 | 2020-07-07 16:04
其他回答(1)
0

搜到这个的不要被误导了。。。我第一眼看到这个,试了好久。
原生的spring oauth 是不支持对认证服务的负载均衡的(即直接填服务名),至少目前版本不支持。
这是另一个帖子里的 : https://juejin.cn/post/7026510165482422279
楼主这个是一个开源项目 “pig”里的一段,pig对oauth源码进行了很多重写,所以这里才支持的。
如果想要 user-info-uri 能够直接填项目名,实现负载均衡,必须得在配置 ResourceServerConfigurerAdapter 的时候,覆盖UserInfoTokenServices里面的 BaseOAuth2ProtectedResourceDetails。
关键代码如下:

小乐桑 | 园豆:202 (菜鸟二级) | 2021-12-02 20:35

还有,我这里配置的是 user-info-uri

支持(0) 反对(0) 小乐桑 | 园豆:202 (菜鸟二级) | 2021-12-02 20:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册