0

我正在尝试移动我们当前的网络应用程序来检索角色和身份验证以及 openLDAP 系统。我在使用动态组 ( groupOfURLs ) 和 openLDAP 时遇到了一些问题。我正在使用 OpenLDAP 2.4.33 和 spring 3.2 。

我的身份验证已成功运行,但是现在我在设置系统以使用动态组覆盖使用动态组作为角色时遇到问题。

在春季方面,我正在尝试将 DefaultLdapAuthoritiesPopulator 与 groupSearchFilter = “(member={0})”一起使用。我遇到的问题是 spring 在我的动态组中找不到任何成员,但是它可以找到静态组的成员(groupofnames)(。

这似乎不是春季问题,因为我使用 ldapsearch 命令遇到了同样的问题。我遇到的问题最好通过例子来说明。

我正在使用以下 LDIF

dn: ou=Groups,dc=myapp,dc=com
objectClass: top
objectClass: organizationalUnit
ou: Groups


dn: ou=Users,dc=myapp,dc=com
objectClass: top
objectClass: organizationalUnit
ou: Users


dn: uid=userA,ou=Users,dc=myapp,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: userA
cn: test-forename
sn: test-surname
mail: userA@mail.com
userPassword:: e1NTSEF9bVpJVGxZRlFYdnhBemhLQkdxWll0VnlRQjRUdjBaelhEZkpaZnc9PQ==


dn: uid=userB,ou=Users,dc=myapp,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: userB
cn: test-forename
sn: test-surname
mail: userB@mail.com
userPassword:: e1NTSEF9bVpJVGxZRlFYdnhBemhLQkdxWll0VnlRQjRUdjBaelhEZkpaZnc9PQ==


dn: cn=DynamicGroup,ou=Groups,dc=myapp,dc=com
cn: DynamicGroup
objectClass: top
objectClass: groupOfURLs
ou: Groups
memberURL: ldap:///ou=Users,dc=myapp,dc=com??sub?mail=userA@mail.com


dn: cn=StaticGroup,ou=Groups,dc=myapp,dc=com
cn: StaticGroup
objectClass: top
objectClass: groupofnames
ou: Groups
member: uid=userA,ou=Users,dc=myapp,dc=com

这将创建两个用户和两个组,一个是静态的,一个是动态的。

如果我做一个简单的搜索,我会得到

ldapsearch.exe -v -x -h localhost -p 389 -D "cn=admin,dc=myapp,dc=com" -w secret -LL -b "ou=Groups,dc=myapp,dc=com" "(objectClass=*)" dn member 

在这个我正在使用(“(objectClass = *)” dn member)进行搜索,我得到以下结果

ldap_initialize( ldap://localhost:389 )
filter: (objectClass=*)
requesting: dn member
version: 1

dn: ou=Groups,dc=myapp,dc=com

dn: cn=DynamicGroup,ou=Groups,dc=myapp,dc=com
member: uid=dbunit,ou=Users,dc=myapp,dc=com
member: uid=userA,ou=Users,dc=myapp,dc=com
member: uid=userB,ou=Users,dc=myapp,dc=com

dn: cn=StaticGroup,ou=Groups,dc=myapp,dc=com
member: uid=dbunit,ou=Users,dc=myapp,dc=com

这清楚地说明了查询返回静态组和动态组的结果。这表明它已正确配置并且具有属性成员。

我遇到的问题是当我在成员属性上添加过滤器时。

ldapsearch.exe -v -x -h localhost -p 389 -D "cn=admin,dc=myapp,dc=com" -w secret -LL -b "ou=Groups,dc=myapp,dc=com" "(member=*)" dn member

在这种情况下,我将应用过滤器“(member = *)”。

ldap_initialize( ldap://localhost:389 )
filter: (member=*)
requesting: dn member
version: 1

dn: cn=StaticGroup,ou=Groups,dc=myapp,dc=com
member: uid=dbunit,ou=Users,dc=myapp,dc=com

在这种情况下,返回的只是静态组。过滤器似乎无权访问成员属性。

有没有其他人遇到过这个问题?

任何帮助,将不胜感激。

4

1 回答 1

0

很明显,这不是动态组不起作用的方式。最后我决定使用静态组。

可以在以下位置找到一个很好的答案:stackoverflow.com/questions/4603570/openldap-dynlist-posixgroup

于 2014-03-28T12:15:00.167 回答