每个系统都做了一套注册登录。用户记不住三套密码,你要维护三套账号体系。想加个第三方登录,还得每个系统各接一遍。

Keycloak 是开源身份认证与访问管理(IAM)方案,思路是把登录、用户和权限从业务系统里抽出来统一做。

Keycloak:一套登录,多个系统通用

各做一套登录的代价

  • 用户账号分散在不同系统,重复注册、重复找回密码
  • 密码强度策略、验证码、找回流程每个系统各实现一遍
  • 想接第三方登录,每个系统都得单独对接一次
  • 权限模型各不相同,出了安全问题很难统一审计

Keycloak 提供什么

Keycloak 提供什么

单点登录(SSO)。 登录一次,多个应用通用;支持 SAML、OIDC / OAuth 2.0 等标准协议。

用户联邦。 可以对接已有的 LDAP / Active Directory,不强制迁移存量账号。

集中用户管理。 注册、密码策略、找回密码、多因素认证(MFA)都在一处配置。

细粒度授权。 除认证之外,还能做基于角色和策略的授权管理。

身份中介。 把外部身份源(社交账号、企业身份)接入进来,业务系统只面对 Keycloak 一个入口。

生态成熟。 CNCF 项目,文档和客户端适配器齐全,主流语言都有现成的集成方式。

自建登录 vs Keycloak

对比各系统自实现

Keycloak 各系统自实现
多系统统一登录 天然支持 需自己打通
标准协议 内置 SAML / OIDC 自己实现
对接 LDAP / AD 内置 自己写
初期成本 要部署、要理解概念 写个登录页很快

"认证这事儿,做一次是成本,做三次就是债务。"

需要注意

概念门槛不低。 Realm、Client、Role、Scope 这套术语要先理解清楚,仓促上手很容易配错权限。

它会变成核心依赖。 一旦所有系统都依赖它,可用性要求就非常高,必须做高可用部署和数据备份。

升级留意 breaking change。 大版本之间配置和主题可能有不兼容变更,升级前务必看发行说明、先在测试环境验证。

对"系统超过两个、还在各做各的登录"的情况,早点把认证收敛到一处,后面能省下大量重复劳动。

项目地址: https://github.com/keycloak/keycloak