钥匙斗篷在按下按钮后出现"Username or password is wrong"错误"unlink users"



我在 Centos 上使用独立的 Keycloak 4.5.0 版本,为 Web 应用程序提供带有 LDAP 的安全登录。

它工作成功,但是当有人按下Keycloak管理面板上的"取消链接用户"按钮后>用户联合>LDAP时,任何人都无法使用LDAP用户名和密码登录,因为它给出了"用户名或密码错误"错误。

我尝试按下"同步所有用户"按钮,但没有变化。所以我从服务器重新启动了 keycloak 应用程序,但问题没有改变。

我检查了 keycloak 的服务器日志,它给出了:

11:22:51,152 错误 [org.keycloak.events.EventBuilder](默认任务-1(事件侦听器"用户"已注册,但找不到提供程序。

因此,请帮助我解决此登录问题,并提供有关"取消链接用户"按钮的信息。

感谢响应。

keycloak 无法从 ldap 获取密码。取消链接过程后,无法再检查密码,登录将失败。您必须为用户设置"密码重置操作",以让他们指定一个新操作。

可以在此处找到迁移用户的有趣方法:零停机时间迁移到Keycloak

显然,可以通过数据库手动重新链接用户:

  1. 转到COMPONENT表,然后找到 LDAP 的配置名称用户联合中的配置。复制身份证
  2. 转到您的USER_ENTITY表并查询您想要的帐户恢复
  3. 在帐号数据的FEDERATION_LINK列中,粘贴组件标识
  4. 通过点击用户中的"同步所有用户"按钮进行验证联合身份验证配置页

基于REALM_ID从表中查找联合身份验证 ID 的示例查询COMPONENT查询:SELECT id FROM COMPONENT WHERE NAME = '<mapper-ldap-name>' AND REALM_ID = '<realm-name>';

基于

REALM_ID查询更新USER_ENTITY federation_link列的示例查询: UPDATE USER_ENTITY SET FEDERATION_LINK = '<federation-id>' WHERE REALM_ID = '<realm-name>';

我们通过使用这样的 shell 脚本删除除管理员以外的所有用户,然后"同步所有用户"来解决它。如果您仍具有管理员访问权限,也可以通过 UI 删除它们。

kcadm=/opt/keycloak/bin/kcadm.sh
$kcadm config credentials --server http://localhost:8080/auth --realm master --user admin
for x in $($kcadm get users -r myrealm|jq -r '.[].id'); do $kcadm delete users/$x -r myrealm; done

相关内容

最新更新