使用Keycloak作为多租户应用IDP broker存储租户ID的标准方案
Keycloak 作为 IDP Broker 存储租户ID的标准实现方案
- 方案1:自定义参数+会话暂存映射
触发第三方登录跳转时,给Keycloak授权端点追加自定义查询参数如tenant_id=xxx,在对应身份提供商配置中开启「允许传递流程参数到上游」的开关,同时配置身份提供商预登录脚本,将请求携带的tenant_id写入当前用户会话属性。第三方登录回调完成后,配置用户属性映射器,将会话中暂存的tenant_id写入用户的profile.website属性,和本地注册用户的存储逻辑完全对齐。 - 方案2:扩展
state参数解析
Keycloak本身占用state参数存储会话信息的场景下,你可以对state值做自定义拼接:格式设为{keycloak原始会话值}:{tenant_id},Keycloak只会校验前半部分的会话有效性,回调时拆分完整state参数即可拿到租户ID,再调用Keycloak Admin API更新对应用户的租户属性即可,该方案无需修改Keycloak核心配置,适配所有第三方IDP。 - 方案3:多IDP实例固定映射
若你的租户数量不多,且各租户有独立的第三方IDP应用配置,可以给每个租户配置同一个第三方IDP的不同实例,每个实例预设固定的租户ID属性映射规则,用户通过对应租户的IDP实例登录时,会自动将预设的租户ID写入用户属性。
内容的提问来源于stack exchange,提问作者ahmed galal
相关产品推荐
相关产品推荐

