已合并
fix(manager): 补全manager侧接口的权限验证 #581
Wal1et创建于 9 天前
fix(manager): 补全manager侧接口的权限验证 #581
已合并
Pull Request已成功合入, 合并人@张雅晴
(感谢 Wal1et 的贡献)atomgit-bot
9 天前 评论:
9 天前 评论:
变更摘要
本变更主要为 Manager 侧接口补全认证与权限验证:在 register.py 中重构路由装配,将业务接口默认置于 Depends(get_current_user) 的认证子路由下,把 templates、import_export、instance、application_config、instance_access 等旧接口收敛到统一 Depends(require_admin) 的 admin 子树,并把无需登录的公开接口(如登出清理)单独挂载,避免子路由无法移除父级依赖的问题;同时强化 jwt_verify 的 access JWT 校验与 auth_guards 的错误响应语义,修正用户面选路的授权缓存行为,并补充了端到端与单元测试。
主要改动
- 路由级认证与授权分层:
register.py新增_build_api_router(),业务v1_router默认携带Depends(get_current_user),旧接口统一放入Depends(require_admin)的admin_router,public_user_console_router在/v1/user-console下独立挂载,使权限型接口与 legacy admin 子树互为兄弟而非嵌套。 - 认证守卫与错误语义:
auth_guards.py对缺失/无效 token 统一返回带WWW-Authenticate: Bearer的 401,并将PublicKeyUnavailableError映射为 503;require_permission写入dependency.required_permission便于测试检查依赖图。 - JWT 校验增强:
jwt_verify.py新增PublicKeyUnavailableError,并在decode_token中要求exp/iat为整数、typ必须为access、sub为非空字符串、groups为字符串列表,同时对畸形 claims 归一为jwt.InvalidTokenError。 - 用户面选路授权缓存修正:
user_face_upstream.py将user_can_access_instance准入判断前置到缓存查询之前,仅缓存上游映射而不缓存授权决策,使授权撤销/禁用/过期能立即生效。 - 演示客户端凭证处理:
enterprise_config_demo_data_config.py的ManagerClient支持通过MANAGER_ACCESS_TOKEN提供Authorization: Bearer,follow_redirects=False且将 3xx 视为错误,避免凭证随重定向泄露;user_console_routers.py将active-cluster清理接口挂到公开路由并把响应头改为Cache-Control: no-store。


不准确?
atomgit-bot
9 天前 评论:
9 天前 评论:
openJiuwen-bot
9 天前 评论:
9 天前 评论:
欢迎来到 openJiuwen 社区
Hey @u010240195 , 感谢你对社区的贡献.
机器人使用手册
有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。


atomgit-bot
9 天前 评论:
9 天前 评论:
9 天前 添加了label:openJiuwen-cla/yes
9 天前 修改了pull request 的描述
9 天前 关联了issue:[Feature]: Agent Runtime - Agent执行
openJiuwen-bot
9 天前 评论:
9 天前 评论:
| 任务名称 | 结果 | 日志操作 |
|---|---|---|
| 静态检查 | ❌FAILED | 点此跳转 |
| 禁用词扫描 | ✅SUCCESS | 点此跳转 |
| 防投毒检查 | ✅SUCCESS | 点此跳转 |
| 开源合规检查 | ✅SUCCESS | 点此跳转 |
| UT测试 | N/A | N/A |
| ST测试 | N/A | N/A |
| build 编译包 | N/A | N/A |
| ruff codecheck | {{ruff_codecheck_result}} | {{ruff_codecheck_link_text}} |
| issue关联检查 | {{issue_linked_result}} | {{issue_linked_link_text}} |
| pr size检查 | {{pr_size_result}} | {{pr_size_link_text}} |


9 天前 添加了label:ci-failed
9 天前 删除了label:openJiuwen-cla/yes
9 天前 添加了label:openJiuwen-cla/yes
9 天前 删除了label:ci-failed
openJiuwen-bot
9 天前 评论:
9 天前 评论:
| 任务名称 | 结果 | 日志操作 |
|---|---|---|
| 静态检查 | ❌FAILED | 点此跳转 |
| 禁用词扫描 | ✅SUCCESS | 点此跳转 |
| 防投毒检查 | ✅SUCCESS | 点此跳转 |
| 开源合规检查 | ✅SUCCESS | 点此跳转 |
| UT测试 | N/A | N/A |
| ST测试 | N/A | N/A |
| build 编译包 | N/A | N/A |
| ruff codecheck | {{ruff_codecheck_result}} | {{ruff_codecheck_link_text}} |
| issue关联检查 | {{issue_linked_result}} | {{issue_linked_link_text}} |
| pr size检查 | {{pr_size_result}} | {{pr_size_link_text}} |


9 天前 添加了label:ci-failed
9 天前 删除了label:openJiuwen-cla/yes
9 天前 添加了label:openJiuwen-cla/yes
9 天前 删除了label:ci-failed
openJiuwen-bot
9 天前 评论:
9 天前 评论:
| 任务名称 | 结果 | 日志操作 |
|---|---|---|
| 静态检查 | ❌FAILED | 点此跳转 |
| 禁用词扫描 | ✅SUCCESS | 点此跳转 |
| 防投毒检查 | ✅SUCCESS | 点此跳转 |
| 开源合规检查 | ✅SUCCESS | 点此跳转 |
| UT测试 | N/A | N/A |
| ST测试 | N/A | N/A |
| build 编译包 | N/A | N/A |
| ruff codecheck | {{ruff_codecheck_result}} | {{ruff_codecheck_link_text}} |
| issue关联检查 | {{issue_linked_result}} | {{issue_linked_link_text}} |
| pr size检查 | {{pr_size_result}} | {{pr_size_link_text}} |


9 天前 添加了label:ci-failed
9 天前 删除了label:openJiuwen-cla/yes
9 天前 添加了label:openJiuwen-cla/yes
openJiuwen-bot
9 天前 评论:
9 天前 评论:
9 天前 删除了label:ci-failed
openJiuwen-bot
9 天前 评论:
9 天前 评论:
| 任务名称 | 结果 | 日志操作 |
|---|---|---|
| 静态检查 | ✅SUCCESS | 点此跳转 |
| 禁用词扫描 | ✅SUCCESS | 点此跳转 |
| 防投毒检查 | ✅SUCCESS | 点此跳转 |
| 开源合规检查 | ✅SUCCESS | 点此跳转 |
| UT测试 | N/A | N/A |
| ST测试 | N/A | N/A |
| build 编译包 | N/A | N/A |
| ruff codecheck | {{ruff_codecheck_result}} | {{ruff_codecheck_link_text}} |
| issue关联检查 | {{issue_linked_result}} | {{issue_linked_link_text}} |
| pr size检查 | {{pr_size_result}} | {{pr_size_link_text}} |


9 天前 添加了label:ci-successful
9 天前 合入了pull request
9 天前 删除了label:ci-successful
Paired: GitHub #251 ↔ GitCode !581
What type of PR is this?
/kind
Self-checklist:(请自检,在[ ]内打上x,我们将检视你的完成情况,否则会导致pr无法合入)