如何开启 Nacos 服务端鉴权防止未授权服务注册

文章导读
开启 Nacos 鉴权后,默认 Token 失效时间为 18000 秒,且 2.2.1 版本后社区版本将移除默认密钥值,必须自行配置才能启动节点。
📋 目录
  1. 原因分析
  2. 解决方案
  3. 注意事项
  4. 参考来源
A A

如何开启 Nacos 服务端鉴权防止未授权服务注册

开启 Nacos 鉴权后,默认 Token 失效时间为 18000 秒,且 2.2.1 版本后社区版本将移除默认密钥值,必须自行配置才能启动节点。

原因分析

Nacos 是一个内部微服务组件,需要在可信的内部网络中运行,不可暴露在公网环境。默认情况下,Nacos 引擎不启用鉴权,会响应所有请求,这会导致配置中心对外直接暴露。根据 2025 年 3 月 5 日发布的文档,Nacos 提供的是简单鉴权实现,为防止业务错用的弱鉴权体系,不是防止恶意攻击的强鉴权体系。如果运行在不可信的网络环境或者有强鉴权诉求,需要参考官方简单实现做替换增强。

解决方案

非 Docker 环境配置

修改 application.properties 文件,开启鉴权之前配置为:nacos.core.auth.enabled=false。开启鉴权之后,需要设置以下参数:

  • nacos.core.auth.system.type=nacos
  • nacos.core.auth.enabled=true
  • nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

自定义密钥时,推荐将配置项设置为 Base64 编码的字符串,且原始密钥长度不得低于 32 字符。例如:nacos.core.auth.default.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=。注意:鉴权开关是修改之后立马生效的,不需要重启服务端。

Docker 环境配置

使用官方镜像时,在启动 docker 容器时添加环境变量NACOS_AUTH_ENABLE=true。示例命令:

如何开启 Nacos 服务端鉴权防止未授权服务注册
docker run --env PREFER_HOST_MODE=hostname --env MODE=standalone --env NACOS_AUTH_ENABLE=true -p 8848:8848 nacos/nacos-server

还可以添加其他鉴权相关的环境变量:NACOS_AUTH_TOKEN_EXPIRE_SECONDS(token 失效时间,默认 18000 秒)、NACOS_AUTH_TOKEN(token,默认 SecretKey012345678901234567)。

Kubernetes 环境配置

在 Kubernetes 的 Deployment 或 StatefulSet 配置中,通过环境变量方式设置鉴权参数:

spec:
  containers:
  - name: nacos-server
    image: nacos/nacos-server
    env:
    - name: NACOS_AUTH_ENABLE
      value: "true"
    - name: NACOS_AUTH_TOKEN
      value: "你的 Base64 编码密钥"

确保配置了所有必要的鉴权环境变量,并考虑使用 ConfigMap 或 Secret 来管理敏感信息。

OpenAPI 鉴权使用

开启鉴权后,首先需要使用用户名和密码登录 Nacos。示例:

curl -X POST '127.0.0.1:8848/nacos/v3/auth/user/login' -d 'username=nacos&password=nacos'

若用户名和密码正确,返回信息例如:{"accessToken":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTYwNTYyOTE2Nn0.2TogGhhr11_vLEjqKko1HJHUJEmsPuCxkur-CfNojDo","tokenTtl":18000,"globalAdmin":true}。接下来进行配置信息或服务信息时,应当使用该 accessToken 鉴权,在 url 后添加参数accessToken=$accessToken

如何开启 Nacos 服务端鉴权防止未授权服务注册

注意事项

  • 密钥需要保持节点间一致,长时间不一致可能导致403 invalid token错误。
  • 文档中提供的密钥为公开密钥,在实际部署时请更换为其他密钥内容,防止密钥泄漏导致安全风险。
  • 开启 Nacos 鉴权功能之后,无法通过 Nacos 开源控制台访问 Nacos 实例,仅支持使用 MSE 控制台访问该实例(针对阿里云 MSE 场景)。
  • 创建的 Nacos 引擎默认不启用鉴权,Nacos 引擎会响应所有请求,建议仅在生产环境中部署集群模式并开启鉴权。
  • 关闭使用 User-Agent 判断服务端请求并放行鉴权的功能:nacos.core.auth.enable.userAgentAuthWhite=false
  • 配置自定义身份识别的 key 和 value:nacos.core.auth.server.identity.key=examplenacos.core.auth.server.identity.value=example

参考来源

来源:Nacos 官方文档 - 服务端如何开启鉴权(2025 年 3 月 5 日发布)

来源:阿里云 MSE 控制台文档 - 配置鉴权(2026 年 4 月 23 日发布)

来源:Nacos 快速开始指南(2026 年 4 月 14 日的资料)

来源:Nacos 鉴权配置说明(2024 年 9 月 26 日收录)