认证授权与租户隔离
认证授权与租户隔离
管理端会话、资源授权、开放 API 密钥和分享访问各自承担不同职责。集成时先确定调用通道,再使用对应的凭证和准入规则。
管理端认证
Saber 登录后,通过平台请求链携带 Blade-Auth: bearer <access_token>。请求链还处理客户端头、语言、报文加密和会话续期;Saber-AI 经契约委托使用。
带连接凭证的保存或测试接口标注 @ApiCrypto,前端同步设置 cryptoData: true。回包中的密码、密钥与鉴权头由包装器掩码处理。
资源授权
ACL 管理应用、智能体、知识库和问数四类资源。等级按数值递增,较高等级包含较低等级。
| 等级 | 值 | 典型能力 |
|---|---|---|
| 使用 | 10 | 可见、只读、运行、检索 |
| 编辑 | 20 | 包含使用,修改配置与内容、复制、启停 |
| 管理 | 30 | 包含编辑,协作授权、回收、所有权转移等 |
管理操作通过 @ResourceAuth 或 AclChecker.check 检查身份、租户和等级。通过后固定资源所属租户,派生操作使用相同执行租户。
开放 API
开放接口使用 Authorization: Bearer <api_key>。密钥范围为 platform、app、agent、knowledge,资源级密钥同时绑定资源主键。
@ApiAuth(scope=...) 与认证切面负责统一准入;涉及请求体资源时由业务继续核对范围。密钥租户决定执行上下文,记录中保存密钥 ID。
密钥明文仅签发时返回,数据库保存前缀和 SHA-256 摘要。集成方应在自己的凭证配置中保存原始密钥。
网页运行与分享
资源运行页先调用 AclChecker.checkUsable:开启匿名访问时按资源规则准入;否则要求登录并具备使用级权限。匿名准入不改变管理操作权限。
仪表盘与创作只读分享采用各自的分享规则;不能将资源主键、资源密钥与作品分享 token 互换使用。
租户上下文
TenantScope 统一解析执行租户。管理操作按资源租户固定,开放调用按密钥租户固定,公开运行在准入后使用资源租户。用户身份用于会话归属和审计。
新增与派生记录按对应资源归属写入租户字段。缓存通过租户作用域读取和失效,模型、知识与用量不跨租户共用缓存桶。
源码定位:business/acl、business/api/auth、engine/common/call/TenantScope、engine/ops/key。
