You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已编写Keycloak的Authenticator实现,如何配置启用自定义认证流?

在Keycloak中启用自定义认证流的后续步骤

你已经完成了org.keycloak.authentication.Authenticator接口的实现,接下来按以下步骤配置Keycloak使用该自定义认证流:

1. 打包并部署自定义Authenticator

  • 用Maven或Gradle将你的Authenticator实现打包成Jar包,注意Keycloak API依赖要设为provided scope,避免和Keycloak内置依赖冲突
  • 将Jar包放到Keycloak安装目录下的providers文件夹中(比如/opt/keycloak/providers)

2. 刷新Keycloak提供者并重启服务

  • 执行Keycloak bin目录下的kc.sh build(Linux/macOS)或kc.bat build(Windows),让Keycloak识别新的自定义提供者
  • 重启Keycloak服务,确保新提供者加载成功

3. 创建并配置自定义认证流

  • 登录Keycloak管理控制台,进入目标Realm,点击左侧菜单的Authentication -> Flows
  • 找到Direct Grant流(这是和密码授权流对应的内置流),点击右侧的Copy按钮,命名为Custom Direct Grant Flow(自定义名称即可)
  • 进入复制后的流编辑页面,删除原有的Username Password Form执行步骤
  • 点击Add execution,在弹出的列表中找到你实现的Authenticator类,选中后添加到流中
  • 将该执行步骤的Requirement设置为REQUIRED,保存流配置

4. 配置客户端使用自定义流

  • 进入需要使用该认证流的客户端页面,切换到Credentials标签页
  • 在Authentication Flow Overrides区域,找到Direct Grant Flow,选择刚才创建的Custom Direct Grant Flow
  • 保存客户端配置

5. (可选)自定义Grant Type

如果不想复用password作为grant_type,想要自定义类型(比如custom_auth),需要额外做这些:

  • 实现org.keycloak.grant.GrantTypeFactory和org.keycloak.grant.GrantType接口,处理自定义grant_type的参数解析和认证逻辑
  • 同样打包Jar部署到providers目录,执行kc.sh build并重启Keycloak
  • 在Realm的Authentication -> Grant Types页面,启用你自定义的Grant Type

6. 测试认证流

发送POST请求到Keycloak的/openid-connect/token接口,携带参数:

client_id=你的客户端ID
client_secret=你的客户端密钥(仅保密客户端需要)
grant_type=password(或自定义的grant_type)
fieldA=你的自定义字段值
fieldB=你的自定义字段值
hash=你的哈希值

如果配置正确,接口会返回access_token和refresh_token。

内容的提问来源于stack exchange,提问作者Innokenty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 16:41:03