面向B2B多产品的Keycloak多组织身份管理部署咨询
基于Keycloak的B2B多产品统一身份管理架构方案与实践
核心架构选型
采用单Realm + 客户组织(Group)隔离 + 专属IDP路由的架构,完全匹配需求:
- 单Realm统一管理所有客户与产品,避免多Realm带来的重复集成工作;
- 用Keycloak原生
Group对应每个B2B客户组织,实现客户级数据与权限隔离; - 通过Home IDP Discovery扩展实现基于邮箱域名的自动IDP路由,用户输入邮箱后直接跳转到所属客户的专属SSO登录页。
分步实现方案
1. 配置IDP自动发现与路由
- 安装Home IDP Discovery扩展后,在Realm的身份提供者菜单下,为每个客户配置专属IDP(Azure AD、Google、LDAP等);
- 在扩展配置中,绑定客户的邮箱域名与对应IDP(如
@customer-a.com映射到Azure AD IDP,@customer-b.com映射到LDAP IDP); - 开启扩展的自动重定向功能,用户登录时输入邮箱后,系统自动匹配域名并跳转至对应客户的SSO登录流程,无需手动选择IDP。
2. 客户AD组到产品角色的映射
步骤1:同步客户AD组到Keycloak Group
- 针对使用LDAP/AD的客户,配置Keycloak的LDAP用户存储,将客户AD的用户与组同步到对应客户的Keycloak Group下;
- 配置同步策略(定时同步或实时同步),确保AD组变更能及时同步到Keycloak。
步骤2:Group到产品客户端角色的映射
- 为每个产品创建独立的Keycloak
Client(代表该产品的身份接入点); - 在每个Client的角色映射菜单中,添加客户Group到Client角色的映射(如将
Customer-A-AD-Admin组映射到产品A的Admin角色); - 开启Client的组角色嵌入功能,确保用户登录后,Token中包含对应的产品角色信息,产品直接通过Token解析权限。
3. 多产品无缝集成优化
- 所有产品统一集成该Realm的Keycloak,采用OpenID Connect协议实现SSO;
- 利用Keycloak的Authorization Services实现细粒度权限控制:基于客户Group、Client角色配置权限策略,产品无需重复开发授权逻辑,直接通过Keycloak的权限API验证;
- 配置统一的登出回调,实现多产品单点登出(SSO Logout)。
关键实践建议
- 客户隔离强化:为每个客户Group设置专属属性(如
customerId),在IDP同步、权限映射时通过该属性过滤数据,避免跨客户信息泄露; - 容错机制配置:设置域名匹配失败时的 fallback 登录方式(如Keycloak本地账号),应对临时IDP故障或未配置域名的用户;
- 同步稳定性保障:对LDAP同步任务配置监控告警,避免因同步失败导致权限失效;
- 权限最小化原则:为每个客户Group分配仅对应其使用产品的角色,避免过度授权;
- 测试场景覆盖:重点测试多域名IDP路由、AD组同步、跨产品权限验证等核心场景,确保流程顺畅。
内容的提问来源于stack exchange,提问作者Ignas Bagdonas
相关产品推荐
相关产品推荐

