Nacos如何开启鉴权,并通过正确配置账号密码解决开启鉴权后SpringBoot启动失败的问题

Nacos鉴权问题

前言

起初默认状态下,Nacos安装包nacos\nacos\conf\application.properties下鉴权是关闭的,即同一个局域网内都可以通过 http://10.12.xxx.xx:8848/nacos/index.html来访问你的Nacos,尤其是连接公司或学校的WIFI时,只要连接此WIFI的用户都能通过此链接访问你的Nacos,极其不安全。

本文解决的问题:

  • 如何开启鉴权,并进行Nacos的账号密码配置

  • 开启鉴权后,无法连接上Nacos,导致Spring Boot启动失败问题

  • 如果通过postmanapi来测试鉴权

默认情况下:

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服务端开启了鉴权,匿名访问被拒绝,所以报错

所以建议不要 把账号密码分别写在configdiscovery下面,直接提出来写在最外层,这样两者都会自动生效

账号密码配置

初始启动,管理员账号为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'

参考官方网站:https://nacos.io/docs/v2/guide/user/auth/

相关推荐
月落归舟4 小时前
java基础之拷贝、单例
java·单例·拷贝
鬼蛟4 小时前
什么是 Git
java
李日灐4 小时前
< 6 > Linux 自动化构建工具:makefile 详解 + 进度条实战小项目
linux·运维·服务器·后端·自动化·进度条·makefile
空中海4 小时前
第二篇:注册中心篇 — Nacos 与 Eureka 服务注册发现
spring boot·云原生·eureka
蝎子莱莱爱打怪4 小时前
小孩儿才做选择!Hermes 和OpenClaw 我都要!
人工智能·后端·github
直奔標竿4 小时前
SpringAI + RAG + MCP + Agent 零基础全栈实战(完结篇)| 27课完整汇总,Java开发者AI转型必看
java·开发语言·人工智能·spring boot·后端·spring
云烟成雨TD4 小时前
Spring AI 1.x 系列【31】向量数据库:进阶使用指南
java·人工智能·spring
枫叶林FYL4 小时前
项目八 云资源成本优化与治理平台
后端·python·自然语言处理·flask
逍遥德5 小时前
SpringBoot数据库连接池HikariCP,Druid,Tomcat JDBC,DBCP2,c3p0配置使用
数据库·spring boot·tomcat
万邦科技Lafite5 小时前
京东开放API接口:item_get返回参数指南
java·前端·javascript·api·电商开放平台