如何读取连接到KeyClope的OpenLdap中的嵌套组

如何读取连接到KeyClope的OpenLdap中的嵌套组,ldap,keycloak,openldap,nested-groups,Ldap,Keycloak,Openldap,Nested Groups,我有一个带有openLDAP用户联合体的密钥斗篷。在LDAP中,我有一个属于多个组的用户“someUser”,即: dn: cn=developers,ou=groups,dc=example,dc=com changetype: add objectclass: groupOfNames member: cn=architects,ou=groups,dc=example,dc=com dn: cn=architects,ou=groups,dc=example,dc=com changet

我有一个带有openLDAP用户联合体的密钥斗篷。在LDAP中,我有一个属于多个组的用户“someUser”,即:

dn: cn=developers,ou=groups,dc=example,dc=com
changetype: add
objectclass: groupOfNames
member: cn=architects,ou=groups,dc=example,dc=com

dn: cn=architects,ou=groups,dc=example,dc=com
changetype: add
objectclass: groupOfNames
member: uid=someUser,ou=People,dc=example,dc=com
在我的KeyClope上,我为LDAP创建了角色的LDAP映射器,如下所示

  • 映射器类型:角色ldap映射器
  • LDAP角色DN:ou=groups,dc=example,dc=com
  • 角色名称LDAP属性:cn
  • 角色对象类:组名称
  • 成员身份LDAP属性:成员身份
  • 属性类型:DN成员资格
  • 用户LDAP属性:uid
  • LDAP筛选器
  • 模式:只读
  • 用户角色检索策略:按成员属性加载角色
  • LDAP属性的成员:memberOf
  • 使用领域角色映射:打开
问题是,当我尝试代表用户“someUser”获取令牌时,令牌上只显示角色“architects”。基于LDAP嵌套分组,我预计“架构师”和“开发人员”角色都会出现在令牌上

基于其他类似主题,我尝试向LDAP筛选器添加以下内容:

memberOf:1.2.840.113556.1.4.1941
但是,这可能仅适用于Microsoft Active Directory


我的问题是,为了在token中同时扮演“架构师”和“开发人员”,我必须做什么?(除了必须对它们进行硬编码之外)。

尝试在以下位置替换成员和对象类:

dn: cn=developers,ou=groups,dc=example,dc=com
changetype: add
objectclass: groupOfURLs
memberURL: ldap:///cn=architects,ou=groups,dc=example,dc=com?sub?(objectclass=*)
这种组定义称为动态组,您应该在openldap中尝试ldapsearch以查看目录是否发送了正确的对象,例如:

  ./ldapsearch -h localhost--port 1389 -D "cn=Directory Manager" -w "password" -b "uid=someUser,ou=People,dc=example,dc=com" -s sub "(objectclass=*)" member

有关更多信息:

感谢您的回答,并对延迟表示抱歉。但是,当我尝试应用动态组时,我遇到了“LDAP:错误代码32-没有这样的对象”,您应该在/etc/openldap/schema/dyngroup.schema中声明LDAP模式中的对象和属性