多租户认证授权
Multi-Tenant Authentication
API Key 驱动的多租户认证体系,支持三级角色和租户级数据隔离
子问题
1.API Key 生成与轮换
2.角色权限校验链
3.租户数据空间隔离
4.请求上下文传播
5.开发模式免认证降级与生产模式切换
6.ADMIN 角色跨账户越权防护
7.agent 级空间哈希命名与碰撞控制
各项目的解法1 solutions
Signals
横向对比
| 维度 | OpenViking |
|---|---|
| 认证方式 | API Key + Bearer Token 双通道,hmac.compare_digest 防时序攻击 |
| 角色模型 | ROOT/ADMIN/USER 三级枚举,require_role 声明式 Depends 工厂 |
| 租户隔离 | URI 前缀自动注入 account_id,viking:// → /local/{account_id}/ 物理隔离 |
| 空间粒度 | 三维隔离:account → user_space_name → agent_space_name(MD5 哈希) |
| Key 管理 | 双层 JSON 存储 + 内存 Dict 索引,O(1) 查找,支持即时轮换 |
| 开发模式 | 无 root_api_key 时自动降级为 ROOT 免认证,仅限 localhost |
最佳实践
1.hmac.compare_digest 防时序攻击
2.RequestContext 贯穿全链路传播租户信息
3.require_role 工厂让权限要求在函数签名中可见可审计
4.contextvars.ContextVar 绑定 RequestContext 兼容遗留调用路径
5.secrets.token_hex(32) 生成 256-bit 密码学安全 Key