Nacos 鉴权问题
Nacos鉴权问题
前言
起初默认状态下,Nacos安装包nacos\nacos\conf\application.properties下鉴权是关闭的,即同一个局域网内都可以通过 http://10.12.xxx.xx:8848/nacos/index.html来访问你的Nacos,尤其是连接公司或学校的WIFI时,只要连接此WIFI的用户都能通过此链接访问你的Nacos,极其不安全。
本文解决的问题:
如何开启鉴权,并进行
Nacos的账号密码配置开启鉴权后,无法连接上
Nacos,导致Spring Boot启动失败问题如果通过
postman或api来测试鉴权
默认情况下:
1 | ### If turn on auth system: |
代码中的application.yaml文件下不需要配置账号密码,如果配置会持续报错
开启鉴权情况下:
所以还是需要开启鉴权,但在开启鉴权后,出现了Spring Boot启动时,无法连接上Nacos报错,导致启动失败
那是因为没有在代码中的application.yaml文件正确配置账号和密码(不应该配置在config下,应该配在nacos全局)
首先需要先在nacos\nacos\conf\application.properties下开启鉴权
1 | ### If turn on auth system: 启动鉴权 |
然后需要在代码中的application.yaml文件配置账号和密码
需要配置在nacos全局下面,为什么不能只配置在config下?因为在Spring Cloud Alibaba Nacos的配置结构中,Config(配置)和 Discovery(注册)是分开的,如果只给“配置中心”配了账号,忘了给“服务注册”配账号,便会报错
当Spring Boot启动进行服务注册(Discovery)时,它发现discovery下面没有账号,就会尝试匿名访问(或者使用默认值)。
因为Nacos服务端开启了鉴权,匿名访问被拒绝,所以报错
所以建议不要把账号密码分别写在config和discovery下面,直接提出来写在最外层,这样两者都会自动生效
账号密码配置
初始启动,管理员账号为nacos,密码会让你先初始化设置,默认为nacos,登入只会便可以在权限控制的地方增加账号,或者修改密码,只有ROLE_ADMIN(初始为nacos的账号)有权限控制的权限
通过Open-API测试鉴权
可以用postman来测试
- 首先需要使用用户名和密码登陆nacos
1 | curl -X POST '127.0.0.1:8848/nacos/v1/auth/login' -d 'username=nacos&password=nacos' |
- 若用户名和密码正确,返回信息如下:
1 | { |
- 接下来进行配置信息或服务信息时,应当使用该
accessToken鉴权,在url后添加参数accessToken=${accessToken},其中${accessToken}为登录时返回的token信息,例如
1 | curl -X GET '127.0.0.1:8848/nacos/v1/cs/configs?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYwNTYyMzkyM30.O-s2yWfDSUZ7Svd3Vs7jy9tsfDNHs1SuebJB4KlNY8Q&dataId=nacos.example.1&group=nacos_group' |











