我认为这可能是一个简单的问题但有一个复杂的解释。
我希望有人能帮助我设置 LDAP 树。我想要有组和用户。一个用户可能属于一个或多个组。这些组代表用户应该有权访问的不同服务/应用程序,即使用 VPN 登录的权限。
我正在使用 OpenLDAP,并且具有以下树结构(带有域 example.com)。
-dc=example,dc=com
--ou=groups
---cn=VPN (members=user1)
---cn=redmine (members=user1,user2)
---cn=vCenter (members=user2,user3)
--ou=users
---cn=user1
---cn=user2
---cn=user3
所有用户都是对象类 inetOrgPerson、posixAccount 和 top(我使用 phpLdapAdmin 中的通用:用户帐户来创建它们)。我已启动并运行 memberOf 覆盖,因此 (memberOf=cn=VPN,ou=groups,dc=example,dc=com) 之类的查询可以正常工作。
现在的问题是。我使用的某些应用程序(例如 redmine)具有可以定义要使用的过滤器的功能,因此可以使用 memberOf 覆盖。其他应用程序/服务没有此功能,但只有一个搜索的基本 dn,即 vCenter 执行以下查询,
base="dc=xyzz,dc=se" filter="(&(objectClass=inetOrgPerson)(objectClass=inetOrgPerson)(uid=user1))
除了它搜索的基本 DN 之外,没有其他方法可以更改。假设用户是 LDAP 树中 vCenter 组的成员,我如何使用 ldap 来检查用户是否应该有权访问 vCenter。
遇到这个问题让我认为我误解了 LDAP 的工作原理。