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来测试鉴权
默认情况下:
properties
### If turn on auth system:
nacos.core.auth.enabled=false

代码中的application.yaml文件下不需要配置账号密码,如果配置会持续报错

开启鉴权情况下:
所以还是需要开启鉴权,但在开启鉴权后,出现了Spring Boot启动时,无法连接上Nacos报错,导致启动失败
那是因为没有在代码中的application.yaml文件正确配置账号和密码(不应该配置在config下,应该配在nacos全局)
首先需要先在nacos\nacos\conf\application.properties下开启鉴权
properties
### If turn on auth system: 启动鉴权
nacos.core.auth.enabled=true
### The two properties is the white list for auth and used by identity the request from other server.
## 默认为空,开启鉴权后需要设置
nacos.core.auth.server.identity.key=nacos
nacos.core.auth.server.identity.value=nacos
### The default token (Base64 String): 默认为空,开启鉴权后需要设置个base64字符串
nacos.core.auth.plugin.nacos.token.secret.key=SiueIj865Kgh67I5ihhjLKU670mu87Y85ygKSDFUI9khjjh5GjlB8oubkj9kI6GT

然后需要在代码中的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
curl -X POST '127.0.0.1:8848/nacos/v1/auth/login' -d 'username=nacos&password=nacos'
-
若用户名和密码正确,返回信息如下:
json
{
"accessToken": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYwNTYyOTE2Nn0.2TogGhhr11_vLEjqKko1HJHUJEmsPuCxkur-CfNojDo",
"tokenTtl": 18000,
"globalAdmin": false,
"username": "test"
}

-
接下来进行配置信息或服务信息时,应当使用该
accessToken鉴权,在url后添加参数accessToken=${accessToken},其中${accessToken}为登录时返回的token信息,例如curl -X GET '127.0.0.1:8848/nacos/v1/cs/configs?accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYwNTYyMzkyM30.O-s2yWfDSUZ7Svd3Vs7jy9tsfDNHs1SuebJB4KlNY8Q&dataId=nacos.example.1&group=nacos_group'
