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/

相关推荐
YDS8291 天前
DeepSeek RAG&MCP + Agent智能体项目 —— 集成ELK日志管理系统和Prometheus监控系统
java·elk·ai·springboot·agent·prometheus·deepseek
骄马之死1 天前
SpringMVC + SpringBoot 核心知识点总结
java·spring boot·后端
GoGeekBaird1 天前
Anthropic技能"(Skills)的经验分享
后端
王码码20351 天前
多台服务器怎么统一看状态?Beszel 轻量监控,搭起来不费事
运维·服务器·后端·安全·阿里云·接口·web
郑洁文1 天前
基于Spring Boot的流浪动物救助网站
java·spring boot·后端·毕设·流浪动物救助
螺丝钉code1 天前
JAVA项目 Claude code CLAUDE.md 到底应该怎么写
java·人工智能·claude code
指令集梦境1 天前
Cursor + Spring Boot实战:从零写一个RESTful API
spring boot·后端·restful
摇滚侠1 天前
Maven 入门+高深 单一架构案例 54-59
java·架构·maven·intellij-idea
VidDown1 天前
Webhook 调试器:让第三方回调“原形毕露”
java·开发语言·javascript·编辑器·postman
码云之上1 天前
聊聊如何设计一个高效、稳定的 Node.js 接入层
前端·后端·node.js