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

Keycloak SPNEGO自动登录报错:重复插入已存在LDAP用户

问题

在Keycloak(26.3.2版本)中配置SPNEGO自动登录时,遇到用户重复插入错误:Keycloak尝试插入已从LDAP导入到数据库的用户drogba,报错信息如下:

KC-SERVICES0013: Failed authentication: org.keycloak.models.ModelDuplicateException: Duplicate resource error
Caused by: org.h2.jdbc.JdbcBatchUpdateException: Unique index or primary key violation: "PUBLIC.UK_RU8TT6T700S9V50BU18WS5HA6_INDEX_B ON PUBLIC.USER_ENTITY(REALM_ID NULLS FIRST, USERNAME NULLS FIRST) VALUES ( /* key:14 */ '0ac32dd4-e24c-4eaf-844e-b0c50b378a0e', 'drogba')"; SQL statement:
insert into USER_ENTITY (CREATED_TIMESTAMP,EMAIL,EMAIL_CONSTRAINT,EMAIL_VERIFIED,ENABLED,FEDERATION_LINK,FIRST_NAME,LAST_NAME,NOT_BEFORE,REALM_ID,SERVICE_ACCOUNT_CLIENT_LINK,USERNAME,ID) values (?,?,?,?,?,?,?,?,?,?,?,?,?)

当前配置:

  • 使用Keycloak 26.3.2版本
  • 用户drogba已从LDAP导入并存在于Keycloak中
  • 已启用Kerberos/SPNEGO自动登录

已尝试的操作:

  • 设置syncRegistrations=false
  • 设置editMode=READ_ONLY
  • 设置LDAP导入模式为READ_ONLY

需求:配置Keycloak,让SPNEGO/Kerberos登录已存在的LDAP用户时不再尝试插入该用户,或提供其他解决方案。

解决方案

1. 校验用户名匹配规则

确保Kerberos认证返回的用户名(如Kerberos主体中的用户名部分)与Keycloak中已导入的LDAP用户username字段完全一致,包括大小写。若Kerberos返回DROGBA而Keycloak中是drogba,会触发重复插入逻辑。

2. 配置SPNEGO的用户查找源

在Keycloak控制台对应Realm中,进入Authentication > Flows,找到SPNEGO所在的认证流(如Browser流):

  • 展开SPNEGO执行步骤,点击「配置」
  • 在User Lookup Provider选项中,选择你的LDAP用户存储(而非默认的keycloak)
  • 保存后,SPNEGO会直接通过LDAP查找用户,不再尝试创建新用户

3. 确认用户的Federation Link关联

检查已导入用户drogba的Federation Link字段,确保其正确指向你的LDAP用户存储:

  • 进入Users > 查看drogba用户 > 属性,确认Federation Link值为你的LDAP存储名称
  • 若该字段为空,Keycloak会将其识别为本地用户,SPNEGO认证时可能触发重复创建

4. 调整Kerberos的主体属性配置

若Kerberos主体格式为user@DOMAIN.COM,需在LDAP存储的Kerberos配置中匹配对应属性:

  • 进入User Federation > 你的LDAP存储 > Kerberos标签
  • 设置Principal Attribute为LDAP中存储用户Kerberos主体的属性(如userPrincipalName)
  • 开启Use Kerberos For Authentication选项

5. 清理无效本地用户记录

若之前手动创建过同名本地用户,需删除该记录,确保Keycloak中仅存在LDAP导入的用户:

  • 进入Users,搜索drogba,删除所有非LDAP来源的用户记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 12:42:38