跳到主内容

Casdoor 与 Keycloak 对比

Keycloak 和 Casdoor 都是采用 Apache-2.0 许可证的开源自托管身份提供商。两者都支持 OAuth 2.0、OpenID Connect 和 SAML,也都能对接 LDAP 或 Active Directory。区别主要在于它们的构建方式,以及你如何运维和定制。

摘要​

CasdoorKeycloak
后端Go,单个可执行文件基于 Quarkus 的 Java
管理和登录界面React,在网页后台中配置管理后台,加上以文件形式打包的 FreeMarker 或基于 React 的主题
多租户组织;应用可以共享,也可以限定在某个组织Realm,以及 realm 内的 Organization
提供的协议OAuth 2.0、OIDC、SAML、CAS、LDAP、RADIUS、SCIM、WebAuthn、KerberosOAuth 2.0、OIDC、SAML、WebAuthn、Kerberos;LDAP 和 AD 作为用户联合
社交和企业登录70 多个内置提供商,包括微信、钉钉、飞书、支付宝内置较少;其他通过通用 OIDC / SAML 或社区扩展接入
扩展方式REST API、webhook、10 多种语言的 SDK部署到服务器中的 Java SPI(Service Provider Interface)
Casbin权限管理Casbin 模型(ACL、RBAC、ABAC)Authorization Services(UMA 2.0、策略)
AI 智能体和 MCP内置 MCP 服务器;为 MCP 提供 OAuth 2.1 授权服务器标准 OAuth;没有内置 MCP 服务器
治理Casdoor 社区,Casbin 提供商业支持CNCF 项目,Red Hat 提供商业支持

架构与运维​

Keycloak 是基于 Quarkus 的 Java 应用。它成熟、扩展性好,但需要调优 JVM,修改提供商或功能时要重新构建,跑集群时还要用 Infinispan 缓存。

Casdoor 是一个 Go 后端,同时提供 React 前端。它以单个进程启动,状态保存在 SQL 数据库中,支持 MySQL、MariaDB、PostgreSQL、SQL Server、Oracle、SQLite、TiDB 和 CockroachDB。试用时一条命令就能把整套跑起来:

docker run -p 8000:8000 casbin/casdoor-all-in-one

生产环境部署见 服务器安装 和 Kubernetes 部署。

定制登录体验​

在 Keycloak 中,修改登录页外观意味着编写主题(FreeMarker 模板或基于 React 的主题)、打包,再部署到服务器。

在 Casdoor 中,每个 应用 都有自己的登录页和注册页,在管理后台编辑即可:显示哪些字段、提供哪些登录方式、布局、背景,以及自定义 CSS 或 HTML。见 界面定制 和 注册项。不需要重新部署。

如果需要服务器本身不提供的行为,Keycloak 的做法是在服务器内运行 Java SPI。 Casdoor 的做法是在你自己的服务中(任何语言)调用它的 REST API,或者响应 webhook。

协议​

两个产品都能作为身份提供商和服务提供商支持 OAuth 2.0、OIDC 和 SAML。区别在边缘场景:

  • CAS:Casdoor 开箱即是 CAS 服务器。 Keycloak 需要社区扩展。
  • LDAP 和 RADIUS:Casdoor 可以充当 LDAP 服务器 和 RADIUS 服务器,老应用、VPN 和网络设备都能用它认证。 Keycloak 能读取 LDAP 目录,但不提供 LDAP 或 RADIUS 服务。
  • Advanced OAuth profiles: both support the device authorization grant, token exchange, and DPoP. Keycloak also covers UMA 2.0, FAPI, and pushed authorization requests (PAR); if you depend on those, Keycloak is the safer choice.

AI 智能体和 MCP​

Casdoor 把智能体当作一等客户端:

Keycloak 可以通过标准 OAuth 为 MCP 客户端签发令牌,也支持动态客户端注册,但 MCP 特有的部分需要你自己组装。

Casbin权限管理​

Keycloak 的 Authorization Services 在服务器内对资源、scope、策略和权限建模,遵循 UMA 2.0。

Casdoor 使用 Casbin。你可以选择或编写模型(ACL、RBAC、带域的 RBAC、ABAC),在界面中管理策略,并在自己的服务中调用同一个 执行 API。如果你的应用已经在用 Casbin,策略和身份就可以放在同一个地方。

从 Keycloak 迁移​

不必一步切换。

  1. 导入用户。 Keycloak 同步器 读取 Keycloak 的数据库表,把用户、凭据和群组映射到 Casdoor。
  2. 并行运行。 把 Keycloak 作为 SAML 提供商 或自定义 OIDC 提供商加到 Casdoor,这样在应用逐步迁移期间,现有的 Keycloak 会话仍然可用。
  3. 逐个迁移应用。 两个服务器都支持标准 OIDC 和 SAML,每个应用只需要换新的 issuer 地址、客户端 ID 和客户端密钥。

如何选择​

如果你需要它的高级 OAuth 规范、已经在维护 Java SPI,或者想要 Red Hat 的商业支持版本,选 Keycloak。

如果你想要一个更轻、更好运维的服务,团队无需部署就能修改登录页,内置 CAS、LDAP 和 RADIUS 服务器,有面向中国市场的登录提供商,或者一流的 AI 智能体和 MCP 支持,选 Casdoor。

另见 对比概览。