Keycloak - 将用户与 LDAP 同步的问题
Posted
技术标签:
【中文标题】Keycloak - 将用户与 LDAP 同步的问题【英文标题】:Keycloak - Issues syncing users with LDAP 【发布时间】:2020-03-13 20:14:09 【问题描述】:我在服务器上安装了 Openldap,然后将用户添加到 ldap 中,下面的屏幕显示通过 Apache Active Directory 显示添加的用户
现在在 keycloak 中,我将用户联合添加为 openLdap,并将其连接到 ldap 没有任何问题,但是当我尝试同步用户时,我收到了消息
成功!用户同步成功完成。 0个导入用户,0个 更新用户
所以没有用户从ldap导入keycloak,下面是keycloak中相关的ldap连接信息。
【问题讨论】:
【参考方案1】:感谢@EricLavault 和一位公司同事,Keycloak 终于能够成功导入用户。以下是我为解决此问题所做的更改。
-
更改
User Object Classes=*
创建了一个新条目ou=People
,然后在其下创建了用户
在 Keycloak 中使用 Users DN = ou=user,ou=people,dc=suredev20
在此之后它开始抛出异常
错误 [org.keycloak.storage.ldap.LDAPStorageProviderFactory](默认 task-1931) 从 LDAP 导入用户时失败: org.keycloak.models.ModelException:从 LDAP 返回的用户为空 用户名!检查 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
作为ldap用户名修复了openldap情况下的属性描述默认cn
【讨论】:
【参考方案2】:用户条目未正确存储在您的目录中。事实上,您不应该将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 dn:ou=people,dc=suredev20
(您可以尝试使用ou=user,cn=root,dc=suredev
而不移动subodh
条目,但不推荐)。
【讨论】:
ou=user,cn=root,dc=suredev20
我试过但还是没有用户导入
这就是我所怀疑的,您需要将cn=root,dc=suredev
保留为叶条目并在目录中的其他位置填充用户,例如。就像ou=people,dc=suredev20
中的建议一样,但不是强制性的。
将发布我必须为此做的更改,我要问的是如何将任何默认角色/组分配给导入到 keycloak 的用户?
@SubodhJoshi 请帮我们解答,我也遇到同样的错误。
@MuddesirAhmed 你的问题是什么?以上是关于Keycloak - 将用户与 LDAP 同步的问题的主要内容,如果未能解决你的问题,请参考以下文章
Keycloak:将 ldap 组映射到 springboot 角色
与 LDAP 的 Keycloak 联合无法建立连接:错误!尝试连接到 LDAP 时出错。有关详细信息,请参阅 server.log
Confluence 6 在你的 LDAP 目录中优化用户和用户组数量