【发布时间】:2014-03-02 20:50:25
【问题描述】:
我是 LDAP 协议和服务器的新手,所以如果我要问另一个琐碎的问题,请原谅我。假设我有以下带有嵌套组的 LDAP DIT。
dn: dc=example,dc=com
objectClass: top
objectClass: domain
dc: example
# Create a place where users are stored
dn: ou=Users, dc=example, dc=com
ou: Users
description: All strongbox users.
objectclass: organizationalUnit
# Create users
dn: uid=tcruise,ou=Users,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
uid: tcruise
cn: Tom Cruise
mail: tcruise@example.com
givenName: Tom
surname: Cruise
userPassword: password
dn: uid=sspielberg,ou=Users,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
uid: sspielberg
cn: Steven Spielberg
mail: sspielberg@example.com
givenName: Steven
surname: Spielberg
userPassword: password
# Create groups
dn: ou=Groups, dc=example, dc=com
ou: Groups
description: Base group organization unit.
objectClass: organizationalUnit
# Employees
dn: ou=Employees, ou=Groups, dc=example, dc=com
ou: Employees
cn: Employees
description: All employees
objectClass: groupOfUniqueNames
uniqueMember: cn=NULL
# Employees (Actors)
dn: ou=Actors, ou=Employees, ou=Groups, dc=example, dc=com
ou: Actors
cn: Actors
description: All actors
objectClass: groupOfUniqueNames
uniqueMember: uid=tcruise,ou=Users,dc=example,dc=com
# Employees (Directors)
dn: ou=Directors, ou=Employees, ou=Groups, dc=example, dc=com
ou: Directors
cn: Directors
description: All directors
objectClass: groupOfUniqueNames
uniqueMember: uid=sspielberg,ou=Users,dc=example,dc=com
示例中的用户可以分配到多个组,每个组都有特定的授权级别。因此,我需要获取用户分配到的所有组及其父组(即tcruise - Actors, Employees)。在这一点上,我找不到任何解决这个问题的例子。我想到的解决方案是:
- 通过执行
(&(objectclass=groupOfUniqueNames)(uniqueMember=uid=sspielberg,ou=Users,dc=example,dc=com))向数据库发送查询以检索用户分配到的所有组 - 解析组
dn(即被,分割并删除数组中的第一条记录) - 在
parentGroup objectClass == groupOfUniqueNames时查找父母
虽然这可能有效,但我觉得它不正确。我想知道是否有更好的方法来达到相同的结果?在这种情况下被认为是best practice 的东西可以在大多数 LDAP 服务器实现中工作(除了 AD,因为他们有解决这个问题的方法)?此外,您能否为我提供一个简单的示例代码或包含此问题可能解决方案的链接?
【问题讨论】:
标签: java ldap ldap-query