3.3 KiB
3.3 KiB
HTTP API 鉴权规范
本文档定义 Nacos 鉴权模型如何应用到 v3 HTTP API。共享鉴权领域模型由 鉴权与权限规范 定义,插件契约由 鉴权插件规范 和 可见性插件规范 定义。
1. 鉴权元组
V3 HTTP API 的有效鉴权元组为:
apiType + signType + resource + action + tags
其中:
apiType区分OPEN_API、ADMIN_API、CONSOLE_API和内部 API。signType标识资源领域,例如CONFIG、NAMING、AI或CONSOLE。resource标识受保护的资源路径或逻辑资源名。action通常为READ或WRITE。tags增加特殊行为,例如ONLY_IDENTITY或ALLOW_ANONYMOUS。
2. Filter 分流
当前代码按 apiType 分发鉴权:
AuthAdminFilter处理@Secured.apiType()为ApiType.ADMIN_API的方法。AuthFilter处理apiType()不是ADMIN_API的受保护 API,包括OPEN_API、CONSOLE_API和内部 API。
3. 必要注解
V3 HTTP API 应声明 @Secured,除非该端点被明确设计为:
- 公开端点;
- 初始化端点;
- 健康检查端点;
- 已记录的兼容路径。
Admin API 应使用 ApiType.ADMIN_API。Console API 应使用
ApiType.CONSOLE_API。Open API 应使用 ApiType.OPEN_API。
4. 公开端点和初始化端点
端点只有在被明确设计为公开端点、初始化端点、健康检查端点或兼容端点时,
才可以不声明 @Secured。公开端点必须在文档中标记为公开,并且不得暴露
敏感运维细节。
已实现的公开端点包括:
GET /v3/admin/core/stateGET /v3/admin/core/state/livenessGET /v3/admin/core/state/readinessGET /v3/console/server/stateGET /v3/console/server/announcementGET /v3/console/server/guideGET /v3/console/health/livenessGET /v3/console/health/readiness
对应的 Admin API 和 Console API 文档已将这些端点标记为公开接口,无需身份信息。
初始化行为:
/v3/auth/user/admin可以在不存在全局管理员,且鉴权系统为NACOS时 创建第一个管理员用户。
5. 插件提供的 Auth API
/v3/auth/* API 面属于鉴权插件。Nacos 默认鉴权插件
随 Nacos 一起发布,必须遵循 Nacos HTTP API 对路径形态、响应形态、
参数校验和错误行为的规范。
第三方鉴权插件通过 Nacos 暴露 HTTP API 时,也建议遵循同一套规则。
6. 已实现例外
以下已实现行为需要在端点级文档中说明:
- 部分 AI 客户端端点通过
ALLOW_ANONYMOUS允许匿名访问。