[Bug] 知识库 API 全部返回 403:路由要求的 scope `kb` 不在 ALL_OPEN_API_SCOPES 白名单内
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- python
- Área
- api, authorization
Línea de trabajo
Comienza con require_kb_scope en astrbot/dashboard/api/knowledge_bases.py y, a continuación, compara las definiciones de scopes en astrbot/dashboard/services/auth_service.py con la validación en astrbot/dashboard/api/auth.py. Reproduce la solicitud usando una clave de API con los scopes kb o *, alinea la ruta y los scopes permitidos, y verifica que las llamadas a la API de la base de conocimientos ya no devuelvan 403.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
问题描述
知识库相关接口(/api/v1/knowledge-bases/*)无法通过任何 API Key 调用,必然返回 403。
原因有两处互相矛盾:
- 知识库路由要求 scope 为
"kb"; - 但
"kb"并不在ALL_OPEN_API_SCOPES白名单里,而校验函数在 scope 不在白名单时直接抛 403。
即:这个 scope 值在框架内无法被授予,因此该组接口对 API Key 永久不可达。仅通过 Dashboard 登录态(JWT)可访问,因为 JWT 分支直接授予 scopes=["*"]。
如何复现
- 创建一个 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"]', ...);
- 调用知识库接口:
curl -H "X-API-Key: $KEY" http://127.0.0.1:6185/api/v1/knowledge-bases
- 实际结果:
{"status":"error","message":"Insufficient API key scope"}
HTTP 403。即使把 scopes 设为 ["*"] 也一样 —— 因为在检查 scopes 内容之前,scope 本身先被白名单拦下了。
代码定位
- 路由要求 scope 为
kb:dashboard/api/knowledge_bases.py:39async def require_kb_scope(request: Request) -> AuthContext: return await require_scope(request, "kb") - 白名单不含
kb:dashboard/services/auth_service.py:58 - 校验直接 403:dashboard/api/auth.py:137
if scope not in ALL_OPEN_API_SCOPES: raise ApiError("Insufficient API key scope", status_code=403)
期望行为
三选一即可:
- 在
DEFAULT_OPEN_API_SCOPES中补上"kb"(最小改动,与file/data等数据类 scope 一致); - 或让知识库路由改用已有的某个 scope;
- 或让 Dashboard API Key 创建界面里可授予的 scope 与路由实际使用的 scope 对齐(当前界面无法覆盖
kb)。
影响
所有依赖知识库接口的自动化场景不可用:批量导入文档、从 URL 导入、检索、文档与分块增删查。
目前只能绕过 HTTP 层,在插件内部直接调用 context.kb_manager 完成同样操作,但这要求使用者自己写插件,普通用户无路可走。
环境
- AstrBot 版本:4.28.2
- 部署方式:Linux / systemd
- 可稳定复现:100%
如判断有误(该 scope 存在其它授予途径而我未找到),欢迎指出。
- Lenguaje dominante
- Python
- Estrellas
- 41.7k
- Forks
- 3k
- Merge medio
- 22 h 53 min
- PR fusionados (30 d)
- 138
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de AstrBotDevs/AstrBot
-
[Bug] QQ频道消息无法回复:markdown 回退顺序有误,误用主动消息导致 304049 限频Posiblemente ocupada @he-yufeng la tomó hace 9 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
AstrBotDevs/AstrBot#10420 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
-
[Feature] 移除「切换到旧版知识库」入口Posiblemente ocupada @lingyun14beta la tomó hace 6 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
AstrBotDevs/AstrBot#10340 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
[Bug] WebChat 聊天偏好在刷新后重置:流式输出、显示思考内容及发送快捷键Posiblemente ocupada @C10H14N2O5 la tomó hace 15 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
AstrBotDevs/AstrBot#10316 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
[Bug] Telegram 群聊中发给其他机器人的命令会误唤醒 AstrBotPosiblemente ocupada @fzf404 la tomó hace 21 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
AstrBotDevs/AstrBot#10240 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
-
[Bug] `<system_reminder>` 每轮写入对话历史且不被清理,导致上下文持续增长Posiblemente ocupada @iuiu-py la tomó hace 25 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
AstrBotDevs/AstrBot#10033 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de AstrBotDevs/AstrBot
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
aws-samples/sample-per-model-bedrock#295 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 76/100
pyrevitlabs/pyRevit#3792 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 69/100
zephyrproject-rtos/reqmgmt#177 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
polarsource/polar#15580 ·
Los mantenedores suelen responder en 1 día
-
[开源推荐] Windows 系统维护工具箱,支持后台任务队列Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
521xueweihan/HelloGitHub#4011 ·