Keycloak - 将用户与 LDAP 同步的问题

Keycloak - Issues syncing users with LDAP

我在服务器上安装了 Openldap,然后将用户添加到 ldap,屏幕下方显示了通过 Apache Active Directory 添加的用户

现在在 keycloak 中我添加了用户联合作为 openLdap 并且它连接到 ldap 没有任何问题,但是当我尝试同步用户时我收到消息

Success! Sync of users finished successfully. 0 imported users, 0 updated users

所以没有用户从ldap导入keycloak,下面是keycloak中的相关ldap连接信息。

用户条目未正确存储在您的目录中。事实上,您不应该将 cn=root 用作容器,因为它应该代表目录管理器,并且应该用于绑定和其他操作,而不是用于构建您的目录。

相反,您应该使用 ou=people,dc=suredev20 的默认用户容器(至少对于 OpenLDAP 和 Apache DS),即。你需要移动 cn=subodh

  • 来自 cn=subodh,ou=user,cn=root,dc=suredev
  • cn=subodh,ou=people,dc=suredev20

此外,在 Keycloack 中,您需要相应地设置 users dnou=people,dc=suredev20 (您可以尝试使用 ou=user,cn=root,dc=suredev 而无需移动 subodh 条目,但不推荐)。

感谢@EricLavault 和一位公司同事,Keycloak 终于能够成功导入用户。我为解决此问题所做的以下更改。

  1. 更改User Object Classes=*
  2. 创建了一个新条目ou=People然后在其下创建了用户
  3. 在 Keycloak 中使用 Users DN = ou=user,ou=people,dc=suredev20

在此之后它开始抛出以下异常

ERROR [org.keycloak.storage.ldap.LDAPStorageProviderFactory] (default task-1931) Failed during import user from LDAP: org.keycloak.models.ModelException: User returned from LDAP has null username! Check configuration of your LDAP mappings. Mapped username LDAP attribute: uid, user DN: cn=subodh123,ou=user,ou=People,dc=suredev20, attributes from LDAP: {sn=[joshi123], cn=[subodh123], createTimestamp=[20191118180647Z], modifyTimestamp=[20191118180647Z]}

这是通过使用 Username LDAP attribute = cn 作为 ldap 用户名 属性描述在 openldap 默认情况下修复的 cn