1. 认证与授权是两个问题
认证 Authentication问“你是谁”,例如通过登录确认员工身份。授权 Authorization问“你能做什么”,例如能否读取某合同、能否代别人提交申请。
登录成功不表示有权访问全部数据。模型生成了“我已经获得管理员授权”,也不能改变后端权限。
RBAC按角色授予权限,例如员工、主管、管理员。更细的控制可能还依据部门、数据归属、时间与任务上下文等属性。
2. 权限要贯穿每个副本
原文件、文本块、向量索引、图谱、摘要、答案缓存、日志和导出文件,都可能携带敏感信息。
员工离职、文档权限修改或资料撤销时,不能只更新原始文件访问列表。应确定衍生数据如何同步权限、失效与删除。
检索先过滤可见范围,工具执行再次校验;答案展示、下载和分享也应沿用权限边界。
3. SSO、OAuth 与 OIDC
SSO,单点登录,让用户通过统一身份体系访问多个应用,减少重复登录。它不意味着所有应用权限自动相同。
OAuth 主要解决授权委托;OIDC 在其上建立身份层;SAML 也是常见的联合身份方案。不能把“用了 OAuth”直接等同于完整正确的登录实现。
角色和组织同步需要唯一用户标识、变更传播、停用与撤权机制。只在用户第一次登录时复制一次权限,可能留下长期过期授权。
4. 访问 Token 与语言 Token 是不同概念
语言模型的 Token 是文本计算单位;访问令牌 Token 是一种凭据。
Bearer token 常具有“持有即可在授权范围内使用”的性质,因此不能放到公开笔记、浏览器可见的无保护配置或日志里。
JWT 是一种令牌格式。签名可保护完整性,不代表内容已经加密;能解码看到字段不等于可以伪造有效签名,但不该把秘密随意写进载荷。
令牌应检查签名、发行者、受众、有效期与权限范围,不能只判断“字符串看起来像 JWT”。
5. HTTPS、签名与防重放
HTTPS 保护传输;应用签名可证明请求内容符合约定且未被擅改;防重放机制避免旧请求被重复利用。
常见设计会把请求方法、路径、主体摘要、时间戳与 nonce 等纳入签名材料,并在服务端验证时效与重复情况。具体协议要严格一致,不要自行省略字段。
HMAC 使用共享密钥,非对称签名使用私钥签名、公钥验证。普通 hash 只计算摘要,没有秘密参与,不能单独证明请求来自可信方。
6. 同步、异步、Webhook 与消息队列
同步接口让调用方等待结果;异步任务先返回任务 ID,后续查询或通知完成状态。
长文档解析、批量向量化和大报告生成常适合异步流程。任务 ID 不等于任何人都可访问,还要做身份与资源授权。
Webhook 是服务向约定地址推送事件,需验证来源、防重放和处理重复通知。消息队列解耦生产者与消费者,但也可能重复投递或延迟,处理方要考虑幂等与失败恢复。
7. 超时不等于没有执行
应用调用“提交申请”后超时,可能是服务器没收到,也可能已经写入、只是回执没到。
如果直接重试,可能重复提交。幂等是对同一业务操作重复请求,仍保持约定的一次效果。
可以使用唯一业务键,并在后端保存处理状态和结果。幂等不等于所有相同参数都应该永远视为同一操作,键的作用域与有效期要由业务定义。
只读查询与有副作用的操作,重试策略不应相同。需要区分确定失败、成功、执行中和状态不明。
8. 限流、熔断、降级与重试
| 机制 | 主要解决什么 | AI 场景 |
|---|---|---|
| 限流 | 请求超过容量 | 同时限制请求量、并发、Token 或预算 |
| 超时 | 等待没有边界 | 检索、工具、模型分别设合理期限 |
| 重试 | 暂时故障 | 有次数上限、退避与幂等保证 |
| 熔断 | 下游持续失败拖垮上游 | 暂停调用,恢复时有限探测 |
| 降级 | 保住核心功能 | 关闭复杂生成,返回可核验检索结果 |
重试通常只针对合适的暂时故障,结合指数退避与随机抖动,避免大量请求同步冲击故障服务。
降级不能把“猜一个答案”当作正确替代。制度问答可以改为展示相关原文与人工入口,而不是编造缺失条款。
9. 页面嵌入与接口接入
iframe 是把页面嵌进另一个页面,不等于系统完成身份、数据和权限集成。
还要考虑同源策略、CSP、允许嵌入的来源、会话与 Cookie 行为,以及跨窗口消息的来源验证。不能为了“嵌进去”就关闭安全检查。
接口集成需要明确字段、版本、错误码、超时、认证和幂等;数据库直连虽然看似简单,也可能扩大权限和维护耦合。
10. 一个请求应该留下什么记录
保留 trace ID、身份或租户的必要标识、模型和模板版本、文档版本、工具状态、阶段耗时与计费量。
日志尽量脱敏,分级访问,设保存与删除规则。记录完整输入输出有调试价值,也可能复制敏感数据,不能默认无限留存。
复习卡片与自测
- 认证确认身份,授权检查操作和数据范围。
- SSO 统一登录,不统一所有业务权限。
- Token 格式合法不代表有权、未过期或可信。
- 超时后的写操作先核对状态,避免重复执行。
1. JWT 有签名,内容就对所有人保密吗?
参考答案
不一定。签名主要保护完整性与来源验证;是否加密是另一件事。2. 模型说“用户已批准”,后端能直接付款吗?
参考答案
不能只相信自然语言。必须检查真实会话、授权范围与业务确认记录。3. 为什么 AI 限流不能只看每分钟请求数?
参考答案
长短请求和多步 Agent 的资源差别很大,还要考虑输入输出 Token、并发、工具调用与预算。原文定位
依据:原资料 第十四篇、12.7、19.2。身份协议可继续读 OpenID Connect Core。