Casdoor:带 Web 控制台的开源身份认证与单点登录平台
一个完整的身份提供者——自托管、多协议、可托管你自己的用户目录
1.8K Forks
Go
Apache-2.0
Agent-first IAM
Casdoor 是一个带 Web 控制台的开源单点登录(SSO)与身份认证服务器,定位为「一个完整的身份提供者」,而非认证代理,也非嵌入代码的库。它说 OAuth 2.0、OIDC、SAML 2.0、CAS、LDAP、SCIM 2.0、WebAuthn、TOTP/MFA、MCP 等多种协议,并对接 Google Workspace、Entra ID、GitHub 等身份源。它面向需要自托管用户目录、统一登录与细粒度授权的团队与开发者,后端是 Go + Beego,前端是 React 18。本文将介绍它的产品定位、核心功能、安装方式、技术架构、与同类方案的对比、身份网关的核心机制、实用技巧与常见问题。
一、产品深度介绍
(一)它是什么
Casdoor 是一个带 Web 控制台的单点登录(SSO)与身份认证服务器。它同时「说」多种标准协议:OAuth 2.0、OpenID Connect(OIDC)、SAML 2.0、CAS、LDAP、SCIM 2.0、WebAuthn、TOTP/MFA 以及 MCP,并能对接 Google Workspace、Microsoft Entra ID(Azure AD)、GitHub 等众多身份提供方。
官方在仓库标题里直接把它定义为「一个开源的、以 Agent 为先的身份认证与访问管理(IAM)平台」,既是面向 LLM / MCP 与 Agent 的网关,也是带 UI 的认证服务器。换句话说,它存储你的用户、签发令牌,并提供一个管理控制台来统一打理这一切;你的业务应用可以把登录完全委托给它,自己不再处理任何密码。
与很多「只做登录页」的方案不同,Casdoor 的定位是「一个完整的身份提供者」,而不是认证代理,也不是一个嵌入你代码的库。它拥有独立的用户目录,支持多租户组织、基于 Casbin 的角色与权限(ACL、RBAC、ABAC 等策略模型)以及审计日志,几乎一切配置都能在 Web 控制台里完成,无需改动配置文件,也无需重新部署。
(二)技术栈
Casdoor 采用前后端分离的架构,各层技术选型如下:
- 后端:Go 语言,基于 Beego 框架,对外暴露 REST API(位于仓库根目录)。
- 前端:React 18,搭配 shadcn/ui 与 Tailwind CSS,使用 Vite 构建(位于 web/ 目录)。旧的 Ant Design 控制台保留在 web-old/ 仅作参考,已不再构建与提供服务。
- 数据库:通过 XORM 支持 MySQL、PostgreSQL、SQLite、SQL Server 等多种数据库。
- 缓存:Redis 为可选项,仅当你运行多个 Casdoor 副本时才需要。

二、功能与应用场景
Casdoor 的功能可以归纳为三大板块:认证、组织与访问控制、以及面向开发者与 AI 的能力。
认证方面:完整的 OAuth 2.0 / OIDC 授权服务器与 OpenID Connect 提供方;SAML 2.0 企业级单点登录(同时可作为 IdP 与 SP);CAS 用于遗留系统;LDAP 既可同步目录也可作为目录服务;WebAuthn / passkey 实现无密码登录;TOTP / MFA 多因素认证(含邮件与短信验证码);以及 Face ID 生物特征登录。
组织与访问控制:多租户,每个组织拥有独立用户与品牌;基于 Casbin 的 RBAC 及 ACL、ABAC 等策略模型;SCIM 2.0 实现自动化的用户开通与回收;社交登录(Google、GitHub、Entra ID 等);可插拔的自定义身份、邮件、短信、存储与支付后端;以及记录登录与后台操作的审计日志。
AI 与 Agent:内置 MCP 网关,用于暴露 Model Context Protocol 服务器并控制其访问;同时支持 A2A(agent-to-agent)通信。
开发者体验:每个控制台操作都对应一个 REST API;提供 Go、Java、Python、Node.js、.NET、PHP、Rust 等语言的 SDK;内置 Swagger UI 实时调试;通过 Webhook 把用户与登录事件推送到你的系统;登录页面与控制台可按组织自定义主题。
典型应用场景包括:企业内部的统一登录门户;为多个自有应用提供集中式 SSO;让遗留 CAS 系统与现代 SPA 共享同一套账户;为 LLM / MCP Agent 提供受控的身份与访问网关;以及面向多租户 SaaS 的按组织品牌化登录。
三、如何安装与使用
最快的试用方式(官方称 30 秒)是 all-in-one 镜像,无需数据库与配置文件,使用 SQLite 与示例数据即可运行:
docker run -p 8000:8000 casbin/casdoor-all-in-one
启动后打开 http://localhost:8000,使用组织 built-in、用户名 admin、密码 123 登录(注意:登录表单的「组织」与「用户名」是分开的字段,文档有时会写作 built-in/admin,这是同一种写法,并非用户名里真的含有斜杠)。
如果不想本地安装,也可以使用官方托管演示:可写的 demo.casdoor.com(数据约每 5 分钟重置)与只读的 door.casdoor.net(稳定全局演示)。两者都接受同样的 built-in / admin / 123 凭据。
生产部署推荐 Docker Compose(Casdoor + MySQL 8),或源码编译(需要 Go 1.25+、Node.js 20 LTS、Yarn 1.x 以及受支持的数据库)。源码方式需先在 conf/app.conf 中设置 driverName、dataSourceName、dbName,再构建前端并运行服务端。
四、官方地址与获取方式
- GitHub 仓库:https://github.com/casdoor/casdoor
- 官方文档:https://casdoor.ai/docs
- 在线演示:demo.casdoor.com(可写)、door.casdoor.net(只读)
- 社区交流:Discord
- 容器镜像:casbin/casdoor-all-in-one
五、与同类方案对比
在自托管身份赛道上,Casdoor 常与 Keycloak、Authentik、SuperTokens 等放在一起比较。它们的差异主要体现在定位与配置方式上。
| 对比维度 | Casdoor | 常见替代方案 |
|---|---|---|
| 产品定位 | 完整身份提供者 + Web 控制台 + Agent 网关 | 多为协议服务器或嵌入式 SDK |
| 协议覆盖 | OAuth2 / OIDC / SAML / CAS / LDAP / SCIM / WebAuthn / MFA / MCP | 覆盖不一,MCP / Agent 支持较少 |
| 配置方式 | 几乎全部在 UI 完成,免改文件、免重部署 | 常需编辑配置文件或写代码 |
| 授权模型 | Casbin 策略(ACL / RBAC / ABAC) | 各有固定或插件式权限模型 |
| 部署形态 | 单个 Go 二进制 + 数据库,无 JVM、无集群要求 | 部分依赖 Java / 应用服务器 |
| 多租户 | 原生多租户,按组织独立品牌 | 支持程度不一 |
如果你只需要在反向代理前加一个登录框,更轻量的工具可能更合适;但当你想「拥有自己的用户目录」本身时,Casdoor 是一个完整且务实的选择。
六、核心机制深度解析
Casdoor 的核心,是把「用户目录 + 协议端点 + 授权策略 + 管理控制台」收敛到一个可自托管的服务里。一次典型的登录与授权流程如下:
这个设计的价值在于:现代 SPA 与遗留的 CAS-only 应用可以共享同一套账户,因为同一个用户目录可同时被 OAuth 2.0、OIDC、SAML 2.0、CAS、LDAP、SCIM 访问。权限判定交由 Casbin 完成,而非写死的权限逻辑,因此 ACL、RBAC、ABAC 乃至自定义模型都能表达。
七、实用技巧
- 尽量在 UI 里配置:组织、应用、提供方、登录方式与品牌都通过 Web 控制台设置,避免改文件后重部署。
- 多租户品牌化:为每个组织配置独立主题与登录页,非常适合 SaaS 场景。
- 协议互通:同一用户目录同时被 OAuth、OIDC、SAML、CAS、LDAP 访问,遗留系统与新应用共享账户。
- 自定义后端:把自有身份、邮件、短信、存储、支付接入自定义 provider,扩展登录与通知能力。
- 缓存策略:运行多个副本时启用 Redis,单副本可忽略。
- 加固安全:启用 MFA / WebAuthn,开启审计日志,定期审查 Casbin 策略。
八、最新更新动态
从公开信息看,Casdoor 目前仍处于活跃开发状态,最近一次代码推送在 2026-09-16。几个值得关注的方向:
- 定位升级为 Agent-first IAM:在原有 SSO 能力之上,新增 MCP 网关与 A2A 支持,把身份能力延伸到 LLM / MCP Agent 场景。
- 前端迁移到 React 18 + shadcn/ui:新控制台基于 Tailwind CSS 与 Vite 构建,旧的 Ant Design 控制台保留在 web-old/ 仅作参考,已不再提供服务。
- 更现代的工具链:源码编译要求 Go 1.25+ 与 Node.js 20 LTS,前端走 Yarn 1.x。
这些变动说明项目正从「UI 驱动的 SSO」向「面向 Agent 与开发者的统一身份平台」演进,具体版本号与变更请以官方文档与仓库 releases 为准。
九、常见问题 FAQ
Q1:Casdoor 是认证库还是独立服务?
它是一个独立的身份提供者 / 服务,不是嵌入你代码的库,也不是反向代理。它自托管、存储用户、签发令牌,并自带管理控制台。
Q2:支持哪些协议?
OAuth 2.0、OIDC、SAML 2.0、CAS、LDAP、SCIM 2.0、WebAuthn、TOTP/MFA 以及 MCP,并可对接 Google Workspace、Entra ID、GitHub 等身份源。
Q3:一定要用 MySQL 吗?
不一定。通过 XORM 支持 MySQL、PostgreSQL、SQLite、SQL Server 等;all-in-one 镜像使用 SQLite,开箱即用,无需额外的数据库服务器。
Q4:必须懂 Casbin 才能用吗?
不是必须的。默认权限模型开箱可用;只有在需要细粒度 ACL / RBAC / ABAC 时才深入编写 Casbin 策略。
Q5:能对接现有身份源吗?
能。可对接 Google Workspace、Entra ID、GitHub 等,也支持 LDAP 同步与自定义 provider,便于渐进式迁移。
Q6:适合多租户 SaaS 吗?
适合。Casdoor 原生支持多租户,每个组织拥有独立用户、角色与品牌,可按组织定制登录页主题。
十、总结
Casdoor 的价值在于把分散的身份工作——用户存储、多协议端点、授权策略、审计、MFA、社交登录、乃至 MCP 网关——收敛到一个可自托管、可 UI 配置的服务里。它用单个 Go 二进制加一个数据库就能跑起来,没有 JVM,也没有集群要求。对于想要「拥有自己的用户目录」、而非只在反向代理前加个登录框的团队,这是一个完整且务实的选择;而对于正在探索把身份能力接入 LLM / MCP Agent 的开发者,它的 MCP 网关也提供了新的想象空间。
自托管身份服务涉及密钥、令牌与用户数据,请妥善保管 conf/app.conf,启用 HTTPS 与 MFA,开启审计日志并定期审查 Casbin 策略;同时遵守所在地的数据与隐私相关法规,以及第三方身份提供方的服务条款。
在撰写本文的过程中,我主要参考了 Casdoor 的 GitHub 仓库(casdoor/casdoor)README.md 与 GitHub API 公开元数据(Stars、Forks、语言、协议、最近更新时间)。文中数据以官方公开信息为准,可能随版本更新而变化。
本文由 AI 辅助整理,基于 Casdoor 的公开文档撰写;配图由 小黑 IP 生成。内容仅用于技术介绍,不构成商业使用授权建议。

AI智汇具 - AI工具推荐与技能教程_好用的AI工具大全






