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

时间:2019-11-18 12:47:30

标签: keycloak openldap

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

enter image description here

现在在密钥斗篷中,我将用户联盟添加为openLdap,并将其与ldap连接起来没有任何问题,但是当我尝试同步用户时,我会收到消息

  

成功!用户同步成功完成。 0个导入的用户,0   更新的用户

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

enter image description here

2 个答案:

答案 0 :(得分:1)

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

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

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

此外,在Keycloack中,您需要相应地设置用户dn ou=people,dc=suredev20 (您可以尝试使用ou=user,cn=root,dc=suredev而不移动subodh条目,但不建议这样做。)

答案 1 :(得分:1)

最后,感谢@EricLavault和公司同事之一Keycloak能够成功导入用户。我已完成以下更改以解决此问题。

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

此后,它开始抛出异常

  

错误[org.keycloak.storage.ldap.LDAPStorageProviderFactory](默认   任务1931)在从LDAP导入用户期间失败:   org.keycloak.models.ModelException:从LDAP返回的用户为null   用户名!检查LDAP映射的配置。映射的用户名   LDAP属性:uid,用户DN:   cn = subodh123,ou = user,ou = People,dc = suredev20,来自LDAP的属性:   {sn = [joshi123],cn = [subodh123],createTimestamp = [20191118180647Z],   ModifyTimestamp = [20191118180647Z]}

默认情况下,Username LDAP attribute = cn通过使用cn作为ldap用户名来固定。