CRM集成Keycloak:如何跳过登录表单直接调用自定义IDP认证?
问题描述
我们拥有自有CRM门户,希望基于OpenID实现用户认证与授权,因此选择使用Keycloak。规划的流程如下:
- 用户访问现有CRM登录页并输入用户名和密码
- 点击登录后,由Keycloak的自定义Identity Provider(IDP)完成用户认证
- Keycloak接收认证成功响应后生成JWT令牌
- 通过自定义IDP配置的
redirect_url将用户重定向回CRM仪表盘
已完成的操作:
- 在Keycloak中创建了自定义IDP
- 配置了该自定义IDP的所有端点
- 未设置自定义认证流程,使用默认的
first broker login首次登录流程
当前遇到的问题:用户在CRM登录页点击登录后,会跳转到Keycloak登录表单,我们希望完全不显示Keycloak登录页面,直接执行自定义IDP端点并将JWT返回给重定向的CRM应用,请问是否可以实现上述流程?
实现方案
可以实现,核心是绕过Keycloak的默认登录页面,强制直接触发自定义IDP的认证流程,具体操作步骤如下:
自定义浏览器认证流程
进入Keycloak管理控制台,按以下步骤操作:- 切换到目标领域,进入
Authentication菜单,选择Flows标签 - 复制默认的
Browser流程,命名为CRM Browser Flow - 编辑新创建的流程,移除其中的
Username Password Form步骤,仅保留Identity Provider Redirector步骤 - 点击
Identity Provider Redirector的配置按钮,设置Default Identity Provider为你的自定义IDP别名,保存配置
- 切换到目标领域,进入
绑定流程到CRM客户端
- 找到CRM对应的客户端,进入
Settings标签 - 在
Authentication Flow Overrides区域,将Browser Flow选择为刚才创建的CRM Browser Flow - 保存客户端配置,确保后续认证请求使用自定义流程
- 找到CRM对应的客户端,进入
优化IDP与客户端配置
- 进入自定义IDP的配置页面:
- 开启
Force Authentication选项,确保每次认证都直接走该IDP - 开启
Automatically Configure User,并配置好用户属性映射规则,自动完成新用户的创建或已有用户的关联,避免首次登录时出现账号关联页面
- 开启
- 在CRM客户端配置中,开启
Always Display in Console(可选,确保IDP优先级)
- 进入自定义IDP的配置页面:
CRM端请求附加IDP提示参数
在CRM登录页提交认证请求时,向Keycloak的授权端点附加kc_idp_hint参数,指定自定义IDP的别名,示例请求:GET /realms/your-realm/protocol/openid-connect/auth?client_id=crm-client-id&redirect_uri=https://your-crm/dashboard&response_type=code&scope=openid&kc_idp_hint=your-custom-idp-alias该参数会强制Keycloak直接跳转至自定义IDP的认证端点,跳过自身登录页面
内容的提问来源于stack exchange,提问作者ScanQR
相关产品推荐
相关产品推荐

