登录做完只是开始:AI 时代最容易被忽视的权限风险
——身份控制平面落地实践(以 Casdoor 为例)
在 AI Agent 和微服务成为主流之后,很多团队会遇到同一个问题:系统"登录"已经上线,但权限事故、越权调用、审计追踪困难反而越来越多。
这不是登录做错了,而是登录只解决了认证入口,不解决全链路治理。 本文以GitHub万星项目Casdoor为例,展示AI身份控制落地的最佳实践。
一、先说结论:Agent场景下为什么要先看 Casdoor
Casdoor 不是一个只做登录页的项目,而是一个开源 IAM/IdP 平台(Go + React),具备协议兼容、身份模型、授权联动、Token 管理、审计基础等平台能力。
在工程上,它适合被放在**"统一身份中枢"**的位置,而不是"某个业务系统的附属组件"。
GitHub地址:(github.com/casdoor/cas…)
它的现实价值
- 统一认证入口:OAuth2/OIDC/SAML/CAS/LDAP 多协议兼容
- 统一身份语义:组织、用户、应用、角色、策略一体化管理
- 鉴权抽离:把鉴权从业务代码中抽离,进入可治理的控制层
- AI 场景底座:给 AI Agent 工具调用场景提供可扩展的身份与权限基础(含 MCP 相关能力基础,适合作为联动起点,复杂策略编排仍需结合网关与业务实现)
二、在AI时代"登录已完成"为何仍会持续出问题
传统架构默认了三个已失效前提:
- 主体只有"人"
- 调用链很短
- 权限边界相对固定
AI 时代这三个前提都变了:
| 维度 | 传统时代 | AI 时代 |
|---|---|---|
| 主体 | 人类用户 | 人类 + 服务账号 + AI Agent |
| 调用链 | 用户 → 应用 | AI Agent → 网关 → 多工具/多服务 |
| 风险传播 | 单点泄露 | 横向穿透多系统 |
真正的问题:你是否具备从身份到执行再到审计的闭环能力。
三、高知识密度拆解:现阶段身份控制平面到底包含什么
把"认证—授权—审计"做成工程闭环,至少需要四层:
A. 身份层(Identity Plane)
职责:身份事实源、令牌签发、策略语义中心
关键能力:
- 统一主体标识(身份标准化,即把不同来源的身份统一成标准格式)
- 统一令牌语义(令牌声明约定,即 Token 里携带哪些字段、什么含义)
- 策略模型(从 RBAC 到 ABAC 的演进接口)
Casdoor 现状:✅ 提供了成熟基础,应用、用户、组织、权限范围、令牌等核心对象可统一管理。
B. 控制层(Enforcement Plane)
职责:执行拦截、工具级准入、上下文注入
关键能力:
- 请求级准入(允许/拒绝)
- 权限范围与工具映射
- 缓存与一致性权衡(低延迟 vs 强一致)
Casdoor 现状:🔄 提供策略语义与身份信任,网关做执行点,需与 MCP Gateway 联动。
C. 业务层(Resource Plane)
职责:资源级二次校验(纵深防御)
关键能力:
- 对敏感资源做二次授权
- 避免"网关单点失守=全局失守"
Casdoor 现状 :⚪ 业务层由应用系统实现,Casdoor 提供身份凭证和策略语义支持,具体资源级鉴权需业务侧集成
D. 观测层(Audit Plane)
职责:证据链与可运营性
关键能力:
- 完整审计字段:主体 / 权限范围 / 工具 / 决策 / 原因 / 追踪 ID
- 拒绝路径可观测(拒绝是正常行为,不是异常)
Casdoor 现状 :✅ 内置审计日志记录( RecordMessage 过滤器),支持结构化日志输出;与外部 SIEM/可观测平台集成需扩展
由此可见,Casdoor的技术功能特性完美契合现阶段的身份控制需求。
四、Casdoor 能力映射:哪些是"现成可用",哪些是"需扩展"
这是最关键的**"技术诚实"**部分。
✅ 现成能力(可以直接上手)
| 能力 | 说明 |
|---|---|
| 多协议认证与统一入口 | OAuth2/OIDC/SAML/CAS/LDAP |
| 核心对象管理 | 应用/用户/组织/角色 |
| 令牌机制 | 签发、刷新、校验 |
| 策略治理基础 | 与 Casbin 结合 |
| MCP 能力基础 | 可作为网关联动起点 |
🔄 需要按场景扩展的部分
- 外部工具生态下的复杂动态授权编排
- 高并发场景下的策略缓存失效策略
- 企业级风控联动(风险评分、行为分析)
- 多区域多租户下的权限传播时延优化
结论:Casdoor 已经是**"可落地底座"**,但不是"替你完成全部业务治理"的黑盒。开发者仍然需要根据实际业务场景做出变化,但毫无疑问Casdoor是现阶段的最好选择。
五、落地方法论:从可用到可治理的 4 阶段路线(基于 Casdoor)
阶段 1:统一身份入口
目标:结束"每个系统一套登录"
Casdoor 实践:
- 部署 Casdoor 作为统一 IdP,配置 OAuth2/OIDC 应用
- 老系统通过 Casdoor SDK 或代理过渡
- 在 Casdoor 中建立组织、用户、应用映射关系
- 明确主体主键规范(用户/服务账号/AI Agent),利用 Casdoor 的
User.Type字段扩展
关键配置:
# 创建应用
curl -X POST $CASDOOR/api/add-application \
-d '{"name": "legacy-system", "organization": "built-in"}'
阶段 2:权限执行前移
目标:把执行点前移到网关
Casdoor 实践:
- 在 API Gateway(如 Kong、APISIX)中集成 Casdoor JWT 验证
- 配置 Casdoor
Permission和Role,建立 deny-by-default 策略 - 利用 Casdoor
Scope定义能力清单 - 对高风险工具,在 Gateway 层调用 Casdoor
EnforceAPI 做二次确认
关键配置:
# 创建权限策略
curl -X POST $CASDOOR/api/add-permission \
-d '{"name": "high-risk-tool", "roles": ["admin"], "resources": ["tool:delete"]}'
阶段 3:策略平台化
目标:减少业务侧硬编码授权
Casdoor 实践:
- 将业务代码中的鉴权逻辑迁移到 Casbin 策略
- 使用 Casdoor
Adapter管理策略规则,支持灰度发布 - 通过 Casdoor API 动态更新策略,无需重启服务
- 建立策略变更审计,利用 Casdoor 内置的
Record机制
关键配置:
# 更新策略(灰度)
curl -X POST $CASDOOR/api/update-policy \
-d '{"adapter": "app-built-in", "rules": [["p", "alice", "data1", "read", "allow"]]}'
阶段 4:审计运营化
目标:从"能拦截"升级到"可运营"
Casdoor 实践:
- 启用 Casdoor
RecordMessage过滤器,记录所有认证/授权事件 - 将 Casdoor 审计日志导出到 ELK/Loki 进行结构化分析
- 跟踪误拒绝率:分析 Casdoor
Record表中的isTriggered字段 - 建立 SLO 看板:监控 Casdoor
/api/get-prometheus-info暴露的指标
关键配置:
# 获取审计记录
curl $CASDOOR/api/get-records?organization=built-in
六、团队最容易踩的坑(Casdoor 实践)
| 常见错误 | Casdoor 场景 | 规避建议 |
|---|---|---|
| 把 RBAC 当终态 | 只用 Casdoor 的 Role,不扩展 Permission 策略 | 从 Role 起步,逐步引入 Casbin ABAC 规则 |
| 只做放行路径,不做拒绝可观测 | Casdoor 默认记录成功登录,忽略失败/拒绝 | 启用 RecordMessage 过滤器,确保 403 拒绝也被记录 |
| 把所有安全押在网关 | Gateway 验证 Casdoor Token 后,业务层不再校验 | 业务层敏感操作调用 Casdoor Enforce API 二次校验 |
| Token 生命周期设计过粗 | Casdoor 默认 ExpireInHours 过长 | 配置短时效访问令牌(1-2小时)+ 轮换刷新令牌 |
| 策略改动无灰度 | 直接修改 Casdoor 生产策略 | 利用 Casdoor 多环境(dev/staging/prod)+ 策略版本控制 |
七、可量化验收指标(Casdoor 监控)
建议把以下指标作为首批可量化验收基线(示例阈值,具体数值需按业务规模与流量模型校准):
| 指标 | Casdoor 数据来源 | 参考基线(示例阈值) | 说明 |
|---|---|---|---|
| 鉴权决策 P95 延迟 | /api/get-prometheus-info | < 50ms | 从请求到返回决策 |
| 策略误拒绝率 | Record 表 isTriggered=false | < 5% | 正常业务下的误拦截 |
| 令牌刷新失败率 | /api/login/oauth/refresh_token 日志 | < 1% | 影响用户体验 |
| 高风险调用拦截趋势 | Enforce API 拒绝次数 | 周统计 | 安全运营核心指标 |
| 审计写入成功率 | Record 表写入状态 | > 99.9% | 合规基础保障 |
| 权限变更传播时延 | 策略更新到生效时间 | < 30s | 策略下发到生效 |
Casdoor 监控实践:
# 获取 Prometheus 指标
curl $CASDOOR/api/get-prometheus-info
# 查询审计记录
curl "$CASDOOR/api/get-records?organization=built-in&startTime=2024-01-01"
核心原则:身份系统上线标准不是"请求能通过",而是**"风险可控、行为可解释、证据可追溯"**。
八、总结
AI 时代新增的大多数权限风险,发生在**"登录通过之后的调用链阶段"**:
- 谁在调用
- 凭什么调用
- 调用了什么
- 为什么被允许/拒绝
- 出问题如何回溯
Casdoor 的价值,不是替你做一个登录页,而是提供一个可工程化扩展的 IAM 底座,让你能把认证、授权、审计从业务细节中抽离出来,形成真正可治理的身份控制平面。
参考链接
- 🌐 官网:casdoor.ai
- 📖 文档:casdoor.ai/docs
- 💻 GitHub:github.com/casdoor/cas…
- 🚀 在线演示:door.casdoor.com(账号:
admin/123)
💬 思考题:你的系统中,权限风险主要发生在哪个环节?登录前、登录后调用链、还是审计盲区?欢迎在评论区讨论!