Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[Bug] 知识库 API 全部返回 403:路由要求的 scope `kb` 不在 ALL_OPEN_API_SCOPES 白名单内

未关闭 适合新手
#10,322 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

@rwzdk 已经在做这个了。

开始于 2026年10月27日。

  • #10801 来自 @rwzdk —— 未关闭
  • #10814 来自 @Lycorius03 —— 未关闭

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
78/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
python
领域
api, authorization

调研方向

从 astrbot/dashboard/api/knowledge_bases.py 中的 require_kb_scope 开始,然后将 astrbot/dashboard/services/auth_service.py 中的 scope 定义与 astrbot/dashboard/api/auth.py 中的验证进行比较。使用具有 kb 或 * scope 的 API 密钥重现请求,使路由与允许的 scope 保持一致,并验证知识库 API 调用不再返回 403。

由索引模型根据 Issue 内容生成。

描述

问题描述

知识库相关接口(/api/v1/knowledge-bases/*)无法通过任何 API Key 调用,必然返回 403。

原因有两处互相矛盾:

  1. 知识库路由要求 scope 为 "kb";
  2. 但 "kb" 并不在 ALL_OPEN_API_SCOPES 白名单里,而校验函数在 scope 不在白名单时直接抛 403。

即:这个 scope 值在框架内无法被授予,因此该组接口对 API Key 永久不可达。仅通过 Dashboard 登录态(JWT)可访问,因为 JWT 分支直接授予 scopes=["*"]。

如何复现
  1. 创建一个 API Key,scopes 设为 ["kb"](或 ["*"]):
INSERT INTO api_keys (created_at, updated_at, key_id, name, key_hash, key_prefix, scopes, created_by, expires_at)
VALUES (..., '["kb"]', ...);
  1. 调用知识库接口:
curl -H "X-API-Key: $KEY" http://127.0.0.1:6185/api/v1/knowledge-bases
  1. 实际结果:
{"status":"error","message":"Insufficient API key scope"}

HTTP 403。即使把 scopes 设为 ["*"] 也一样 —— 因为在检查 scopes 内容之前,scope 本身先被白名单拦下了。

代码定位
期望行为

三选一即可:

  1. 在 DEFAULT_OPEN_API_SCOPES 中补上 "kb"(最小改动,与 file/data 等数据类 scope 一致);
  2. 或让知识库路由改用已有的某个 scope;
  3. 或让 Dashboard API Key 创建界面里可授予的 scope 与路由实际使用的 scope 对齐(当前界面无法覆盖 kb)。
影响

所有依赖知识库接口的自动化场景不可用:批量导入文档、从 URL 导入、检索、文档与分块增删查。

目前只能绕过 HTTP 层,在插件内部直接调用 context.kb_manager 完成同样操作,但这要求使用者自己写插件,普通用户无路可走。

环境
  • AstrBot 版本:4.28.2
  • 部署方式:Linux / systemd
  • 可稳定复现:100%

如判断有误(该 scope 存在其它授予途径而我未找到),欢迎指出。

主要语言
Python
星标
43.2k
派生
3.2k
平均合并
22 小时 58 分钟
30 天内合并 PR
153

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

AstrBotDevs/AstrBot 的其他 Issue

查看 AstrBotDevs/AstrBot 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。