查询 LDAP 以获取用户的角色

Query LDAP to get Role of a User

我是 LDAP 的新手,我已经尝试在 OpenLDAP 上实现 RBAC。我创建了一些用户 (inetOrganizationPerson) 并将它们放在组 (groupOfNames) 中。接下来我创建了一些角色 (organizationalRole) 并将它们与用户组相关联 (roleOccupant),而不是直接将它们与用户相关联。

My Example Organization Model

我正在尝试编写一个可以给我指定用户角色的查询。它应该确定用户属于哪个或哪些组以及分配给这些组的角色是什么。

我想我可以通过两个单独的查询来完成:

1) /usr/local/bin/ldapsearch -x -b 'ou=Groups,dc=example,dc=com' -s sub -LLL "(&(objectclass=groupOfNames)(member=uid=anurag,ou=People,dc=example,dc =com))" cn

2)/usr/local/bin/ldapsearch -x -b 'ou=Roles,dc=example,dc=com' -s sub -LLL "(&(objectclass=organizationalRole)(roleOccupant=cn=Administrators,ou=Groups,dc=example,dc =com))" cn

在第一个查询中,成员 'anurag' 是参数,它产生 'Administrators' 作为用户 'anurag' 所属的组。 第二个查询将 'Administrators'(来自第一个查询)作为参数,并产生 'Admin' 作为角色。

但是我正在寻找,如何通过单个查询实现这一点,前提是它更有效?更重要的是,它通常是如何完成的?

在 LDAP 中,您正在寻找的是使用 Deref 控件完成的。

https://datatracker.ietf.org/doc/html/draft-masarati-ldap-deref-00

如果您使用 Java,一个可能的替代方案是使用 http://directory.apache.org/fortress/,这是一个适用于 OpenLDAP 的完整 RBAC 实现。