一、问题的重现步骤是什么?
1. 服务部署在云服务器上网警扫描发现存在Nacos存在(未授权访问漏洞,未经身份验证的远程攻击者利用此漏洞获取账号密码,获取内部配置信息)的网络安全隐患。
二、你期待的结果是什么?实际看到的又是什么?
设置nacos.core.auth.enabled=true服务正常能启动
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
blade 2.8
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
1.操作步骤
nacos开启鉴权配置,重启
2.修改代码common模块LauncherConstant配置
加username,password
光这里加了其他模块能正常启动,gateway会有报以下异常
com.alibaba.nacos.api.exception.NacosException: <html><body><h1>Whitelabel Error Page</h1><p>This application has no explicit mapping for /error, so you are seeing this as a fallback.</p><div id='created'>Sat May 14 06:51:53 CST 2022</div><div>There was an unexpected error (type=Forbidden, status=403).</div><div>unknown user!</div></body></html>
at com.alibaba.nacos.client.config.impl.ClientWorker.getServerConfig(ClientWorker.java:262)
at com.alibaba.nacos.client.config.NacosConfigService.getConfigInner(NacosConfigService.java:143)
at com.alibaba.nacos.client.config.NacosConfigService.getConfig(NacosConfigService.java:92)
at com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder.loadNacosData(NacosPropertySourceBuilder.java:85)
at com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder.build(NacosPropertySourceBuilder.java:74)
at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.loadNacosPropertySource(NacosPropertySourceLocator.java:204)
at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.loadNacosDataIfPresent(NacosPropertySourceLocator.java:191)
at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.loadNacosConfiguration(NacosPropertySourceLocator.java:161)
at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.loadExtConfiguration(NacosPropertySourceLocator.java:129)
at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.locate(NacosPropertySourceLocator.java:102)
at org.springframework.cloud.bootstrap.config.PropertySourceLocator.locateCollection(PropertySourceLocator.java:52)
at org.springframework.cloud.bootstrap.config.PropertySourceLocator.locateCollection(PropertySourceLocator.java:47)
at org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration.initialize(PropertySourceBootstrapConfiguration.java:101)
at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:623)
at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:367)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:311)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1204)
at com.xxx.xxx.task.XxxTaskApplication.main(XxxTaskApplication.java:11)
3.解决方式:
这里必须也加上用户名和密码。
原理:gateway启动时会走两次登录login接口,第一次默认有,第二次走上述代码时没有注入用户名密码会为空,this.agent.httpGet就会请求不到accessToken为空
只要按上述方式配置即可正常开启nacos鉴权,服务也可以正常启动
感谢反馈,BladeX自23年12月之后发布的版本就增加了这个支持,大家可以参考下最新源码
按照以上配置出现
nacos registry, blade-gateway register failed...NacosRegistration{nacosDiscoveryProperties=NacosDiscoveryProperties{serverAddr='192.168.10.131:8848', username='nacos', password='nacos_ybzPROD129!@(', endpoint='', namespace='', watchDelay=30000, logName='', service='blade-gateway', weight=1.0, clusterName='DEFAULT', group='DEFAULT_GROUP', namingLoadCacheAtStart='false', metadata={IPv6=[2001:0:2851:b9f0:d4:d711:8d1c:40a9], preserved.register.source=SPRING_CLOUD}, registerEnabled=true, ip='192.168.2.138', networkInterface='', port=80, secure=false, accessKey='', secretKey='', heartBeatInterval=null, heartBeatTimeout=null, ipDeleteTimeout=null, instanceEnabled=true, ephemeral=true, failureToleranceEnabled=false}, ipDeleteTimeout=null, failFast=true}},
100%是你自己配置问题,重新发个帖把你所有配置都贴出来。为了防止你额外配置的问题,nacos先用默认的账号密码nacos nacos链接,不要先修改nacos密码。
扫一扫访问 Blade技术社区 移动端