nacos开启鉴权gateway遇到问题解决心得(希望遇到同样问题的人能快速解决)

Blade 未结 2 390
求道玉
求道玉 剑童 2024-08-21 18:43

一、问题的重现步骤是什么?

1. 服务部署在云服务器上网警扫描发现存在Nacos存在(未授权访问漏洞,未经身份验证的远程攻击者利用此漏洞获取账号密码,获取内部配置信息)的网络安全隐患。


二、你期待的结果是什么?实际看到的又是什么?

设置nacos.core.auth.enabled=true服务正常能启动

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

blade 2.8

四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

1.操作步骤

nacos开启鉴权配置,重启

2.修改代码common模块LauncherConstant配置

加username,password

image.png

光这里加了其他模块能正常启动,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.解决方式:

image.png


这里必须也加上用户名和密码。


原理:gateway启动时会走两次登录login接口,第一次默认有,第二次走上述代码时没有注入用户名密码会为空,this.agent.httpGet就会请求不到accessToken为空

image.png


image.png



只要按上述方式配置即可正常开启nacos鉴权,服务也可以正常启动

2条回答
  • 2024-08-22 12:48

    感谢反馈,BladeX自23年12月之后发布的版本就增加了这个支持,大家可以参考下最新源码

    CleanShot20240822125159@2x.png

    CleanShot20240822125055@2x.png

    0 讨论(0)
  • 2024-11-13 15:51

    按照以上配置出现

    image.png

    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}},

    作者追问:2024-11-13 18:02

    100%是你自己配置问题,重新发个帖把你所有配置都贴出来。为了防止你额外配置的问题,nacos先用默认的账号密码nacos nacos链接,不要先修改nacos密码。

    0 讨论(0)
提交回复