场景:Spring cloud分布式项目,项目集成了gateway网关控制,现在项目过大需要分多台服务器部署项目。目前项目部署方式是:注册中心(eureka),网关(gateway),配置中心(config),认证中心(nursing-auth)使用(Spring.security.oauth2)技术,用户模块(opms-biz),这些项目在一台服务器(叫做A服务器吧),其他业务功能模块在其他服务器。现在所有的项目都已经成功注入到eureka中心了,但是在其他服务器请求获取认证中心的用户token数据的时候提示:A服务器没有该实例。没有园豆了,请各大佬帮忙看看,感谢!
已经自己解决,这里就直接写工程名字就好
搜到这个的不要被误导了。。。我第一眼看到这个,试了好久。
原生的spring oauth 是不支持对认证服务的负载均衡的(即直接填服务名),至少目前版本不支持。
这是另一个帖子里的 : https://juejin.cn/post/7026510165482422279
楼主这个是一个开源项目 “pig”里的一段,pig对oauth源码进行了很多重写,所以这里才支持的。
如果想要 user-info-uri 能够直接填项目名,实现负载均衡,必须得在配置 ResourceServerConfigurerAdapter 的时候,覆盖UserInfoTokenServices里面的 BaseOAuth2ProtectedResourceDetails。
关键代码如下:
还有,我这里配置的是 user-info-uri