一、Casdoor 是什么
Casdoor 是 Casbin 社区开发的开源身份认证与访问管理平台(IAM / SSO),使用 Go 与 React 编写,遵循 Apache 2.0 协议,GitHub 上目前有 14.4k star。
需要先区分清楚它的定位:Casdoor 是一个完整的身份提供方,既不是挡在应用前面着的登录代理,也不是嵌入到业务代码里的鉴权库。用户数据存储在 Casdoor,token 由 Casdoor 签发,它自带管理控制台,业务应用可以把整个登录流程委托出去,自身不接触密码。
核心能力包括:
- 多协议接入:同一份用户目录可通过 OAuth 2.0、OIDC、SAML 2.0、CAS、LDAP、SCIM 2.0 访问。新开发的单页应用与只支持 CAS 的历史系统可以共用一套账号体系。
- 多种登录方式:密码、邮箱与短信验证码、WebAuthn / passkey、TOTP / MFA、Face ID,以及 Google、GitHub、Microsoft Entra ID(Azure AD)等上百个第三方身份源。
- 多租户:组织相互独立,各自拥有用户与品牌化配置。
- 策略化授权:访问规则由 Casbin 表达,支持 ACL、RBAC、ABAC 以及自定义模型。
- 全界面配置:组织、应用、身份源、登录方式、邮件短信模板、登录页品牌化均在 Web 控制台配置,无需修改配置文件后重新部署。
- 部署简单:一个 Go 二进制加一个数据库,不需要 JVM、operator 或集群。数据库支持 MySQL、PostgreSQL、SQLite、SQL Server 等。
2026 年 2 月 22 日,Casdoor 被收录进 CNCF 云原生全景图(Cloud Native Landscape),位于 Provisioning 板块的 Security & Compliance 分类。
二、v4.0:控制台从 Ant Design 迁移到 shadcn/ui
v4.0 于 2026 年 9 月 1 日发布,只包含一个特性,但改动面很大:使用多年的 Ant Design 控制台整体替换为 shadcn/ui。
- 新前端位于
web/目录,技术栈为 React 18 + shadcn/ui + Tailwind CSS,构建工具由 create-react-app 改为 Vite。 - 原 Ant Design 前端保留在
web-old/目录,仅供对照,不再构建、不再提供服务。
升级注意事项(不兼容变更):构建产物的目录结构随构建工具一并变化,由 create-react-app 的 build/static/{js,css} 变为 Vite 的 build/assets/。如果你通过 CDN 或反向代理分发 Casdoor 的静态文件,升级到 v4 时必须同步更新路径配置,否则页面资源会 404。除此之外,升级 v4 不需要额外操作。
三、v4.1 至 v4.3 的更新内容
截至 2026 年 9 月 9 日,Casdoor 已迭代至 v4.3。这三个版本一方面修复前端重写带来的行为差异,另一方面补充了新功能。
3.1 控制台交互
- 新增命令面板(command palette)。
- 列表支持批量行选中,表单支持行内校验。
- 控制台表单改为两栏布局;列表页支持隐藏指定列。
- 切换侧栏标签不再触发整个控制台重渲染。
- 切换界面语言立即生效,不再需要刷新页面。
- 登录、注册、找回密码三个页面重新设计,修复暗色模式显示问题,并完成移动篯适配。
3.2 企业目录与协议
- 新增 OIDC 身份源类型,此前需要使用通用配置拼装。
- LDAP:支持按服务器单独启用密码重置;内置 LDAP 服务端支持
sambaSamAccount;自动同步调整为仅在单个节点执行,且连接异常(panic)后不会导致同步整体中断。 - 企业微信同步:支持部门(组织架构)同步,并在部门名称缺失时给出具体原因。
- 权限溯源:用户的角色与权限现在会标注各自由哪个用户组、哪个角色授予,便于排查权限来源。
3.3 运维与安全
- 支持 Redis Cluster,
redisEndpoint可配置多个地址。 - 过期 token 改为分批清理,避免一次性加载导致内存溢出(OOM)。
- 支持对非管理员用户关闭 Casdoor 控制台。
- 注册时强制校验邮箱与手机号唯一性。
- 删除登录会话时同步吊销其 OAuth token。
- back-channel logout 调整为在 token 过期之前发出。
- 为
resource与invoice-payment两组 API 补充了缺失的权限校验。 - 更新权限时仅写入发生变化的 Casbin 策略,而非整体重写。
- Helm chart 并入主仓库,版本号在发版时注入。
3.4 发版流程
自 v4.1 起,发版由 semantic-release 自动打 tag 改为手动推送 tag 触发,release notes 按 commit 类型分组。
四、AI 与 Agent 方向的能力
这是 Casdoor 当前投入最多的方向,可以分成三个层次理解。
4.1 内置 MCP Server
Casdoor 自身就是一个 MCP(Model Context Protocol)Server,实现位于仓库的 mcpself/ 目录,走 Streamable HTTP。当前暴露 15 个工具,覆盖 user、application、permission 三类对象的增删改查:
get_users / get_user / add_user / update_user / delete_user
get_applications / get_application / add_application / update_application / delete_application
get_permissions / get_permission / add_permission / update_permission / delete_permission
Claude Code、Cursor、Windsurf、VS Code + GitHub Copilot 等 MCP 客户端接入后,可以用自然语言完成「为某组织新增用户」「查看某应用关联了哪些权限」这类管理操作,无需打开控制台或手写 API 调用。MCP 工具与 REST 接口共用同一层业务逻辑与权限过滤。
4.2 作为 MCP Server 的授权服务器
MCP 规范要求远程 MCP Server 采用 OAuth 2.1 进行鉴权。这里存在一个与传统 OAuth 不同的前提:传统流程中客户端凭据由开发者预先在后台申请,而 Agent 客户端是用户临时填入一个 Server 地址接入的,此前从未与授权服务器建立过关系,无法持有预分配的 client_id。
因此**动态客户端注册(DCR)**在这条链路上是必需能力。Casdoor 提供了完整实现:
- RFC 7591 动态客户端注册,注册端点在
.well-known/openid-configuration中公布,客户端可通过标准 OIDC discovery 自行发现; - RFC 7592 客户端管理,支持读取、修改、删除已注册客户端;
- OAuth 2.1 + PKCE 授权码流程;
- 授权同意页、JWKS 端点与 JWT 签名校验、resource indicator;
- 动态注册产生的应用继承默认应用配置,包括品牌化字段、
EnableSigninSession、EnableWebAuthn、密码登录与身份源,避免新注册应用呈现为无品牌、无可用登录方式的空白页面。
接入方只需将自有 MCP Server 的 Protected Resource Metadata 指向 Casdoor,用户认证、授权同意、token 签发与校验均由 Casdoor 完成。项目 README 中另列出 MCP gateway(对外暴露多个 MCP Server 并管控访问)与 A2A(agent 间通信)两项能力。
4.3 Agent 运行时审计:OpenClaw 接入
前两层解决「能不能调用」,第三层解决「实际调用了什么」。
OpenClaw 是面向 LLM 应用的可观测性 agent,采集 trace、metric、log 后按 OpenTelemetry(OTLP)协议推送至后端。Casdoor 可直接作为该后端,提供三个 ingest 端点:
POST /api/v1/traces
POST /api/v1/metrics
POST /api/v1/logs
三者均接收 application/x-protobuf。配置方式为在 Casdoor 中创建类型为 Agent (OpenClaw) 的 Log provider,其中 Host 字段用作 IP 白名单,不在白名单内的来源返回 403。
每个 OTLP payload 存储为一条 Entry,附带来源 IP 与 User-Agent,控制台中可按 span 树展开查看。原始 JSONL 会话转录写入指定的 Storage provider,未配置时自动创建本地 provider,重新同步时覆盖而不产生重复数据。若该 agent 已在 Casdoor 的 Agents 中登记(记录其 endpoint 与 bearer token),遥测数据可与 agent 身份关联。不同组织使用不同 Log provider 即可实现数据隔离。
三个层次构成一条完整链路:Agent 通过动态客户端注册获取身份 → 按权限调用 MCP 工具 → 运行时行为以 OTLP 落为可审计的 Entry。
五、快速体验
评估环境一条命令即可启动,内置 SQLite 与示例数据,无需数据库与配置文件:
docker run -p 8000:8000 casbin/casdoor-all-in-one
访问 http://localhost:8000,登录信息:
| 字段 | 值 |
|---|---|
| 组织 | built-in |
| 用户名 | admin |
| 密码 | 123 |
该镜像数据保存在容器内,容器删除后数据即丢失,仅用于试用,不可用于生产。生产环境请参考官方文档使用 Docker Compose、Helm 或源码部署,并务必修改 admin 密码、启用 HTTPS、设置 runmode = prod。
官方在线演示:https://demo.casdoor.com (可写,数据约每 5 分钟重置)、https://door.casdoor.net (只读)。
六、相关链接
- 项目地址:https://github.com/casdoor/casdoor
- 官网与文档:https://casdoor.ai 、https://casdoor.ai/docs/overview
- 版本发布说明:https://github.com/casdoor/casdoor/releases
- CNCF 云原生全景图条目:https://landscape.cncf.io/?item=provisioning–security-compliance–casdoor
利益相关:本人为 Casbin 社区成员。

229

被折叠的 条评论
为什么被折叠?



