Casdoor v4 新版本详解:CNCF 全景图收录的开源 IAM/SSO,控制台重写、内置 MCP Server 与 OAuth 2.1 动态客户端注册

一、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 ClusterredisEndpoint 可配置多个地址。
  • 过期 token 改为分批清理,避免一次性加载导致内存溢出(OOM)。
  • 支持对非管理员用户关闭 Casdoor 控制台。
  • 注册时强制校验邮箱与手机号唯一性。
  • 删除登录会话时同步吊销其 OAuth token。
  • back-channel logout 调整为在 token 过期之前发出。
  • resourceinvoice-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
  • 动态注册产生的应用继承默认应用配置,包括品牌化字段、EnableSigninSessionEnableWebAuthn、密码登录与身份源,避免新注册应用呈现为无品牌、无可用登录方式的空白页面。

接入方只需将自有 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 社区成员。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Casbin开源社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值