SpringCloud nacos1.4.1版本升级开启登录认证踩坑
环境:SpringCloud Greenwich.SR4
SpringBoot 2.1.1.RELEASE
spring-cloud-starter-alibaba-nacos-config 2.1.1.RELEASE
Nacos服务端版本:1.4.1
背景:Nacos鉴权漏洞修复,nacos服务端版本升级到1.4.1的版本后,开启登录认证后,服务启动过程中,读取配置中心和注册时,都会报unknown user!的错误。由于官方文档中也没有找到建设性的意见和指导,各种搜索也没有结果,所以就自己抽空读了一下源码
配置文件中已经对username和password进行了配置(此处用户名密码对应服务端配置文件中的nacos.core.auth.server.identity key/value),但是好像没有生效。
通过报错信息发现,spring-cloud-starter-alibaba-nacos-discovery 2.1.1.RELEASE版本依赖的nacos-client包版本是1.1.4,通过源码分析,发现并不支持username和password的登录认证配置,所以做了以下的操作,引入nacos-client1.4.1版本:
本以为到这就可以解决问题了,但是重启后发现还是报同样的错误,403,unknown user!继续源码断点追踪,发现在nacos-client中调用nacos服务器的时候,username和password为空,也就是没有取到我们的配置文件。
这个时候开始注意到spring-cloud-starter-alibaba-nacos-config 2.1.1.RELEASE,通过源码可以看到在本版本中,nacos config配置文件读取过程中,根本就没有username和password的配置读取。
于是接下来就进行spring-cloud-starter-alibaba-nacos-config的版本升级,目前Alibaba Cloud最高版本为2.2.1.RELEASE,所以,将spring-cloud-starter-alibaba-nacos-config版本升级到2.2.1.RELEASE
至此,重启服务后,配置中心调用成功,解决完毕。
由于该文章是在问题解决后才写的,源码部分就没有在文章中展示,有兴趣的同学可以自行断点追踪
以上描述如有问题,欢迎各位大佬批评指正,谢谢!
原创不易,欢迎一键三连