组的 LDIF 需要与 PHP 一起使用

LDIF for group needed to use with PHP

使用 CentOS 7.5、Apache 2.4.6。 运行 在虚拟机中。无 SSL。

我按照 https://linuxhostsupport.com/blog/how-to-install-ldap-on-centos-7/ 配置了 OpenLDAP。

我创建了用户并使用 ldap_bind($ds, $userid, $password) 检查是否存在有效的用户和密码。

现在我正在尝试查找用户是否是特定组的成员。为此,我查看了 ldap query for group members(以及其他)

我认为我在创建群组时犯了一个错误。

我应该创建组织角色、组还是 posixGroup?由于最后 objective 是检查哪些用户有权使用其中的哪些应用程序和功能 (add/update/delete/etc。) 我会说 organizationalRole 是要做的事情。目前,我使用了:

groups.ldif:

dn: cn=MyAppUsers,dc=mydept,dc=mycompany
objectClass: top
objectclass: posixGroup
cn: Authorized App1 Users
description: Users allowed to use App1

users.ldif:

dn: cn=MyAppUsers,dc=mydept,dc=mycompany
changetype: modify
add: memberUid
memberUid: cn=user1,ou=People,dc=mydept,dc=mycompany
memberUid: cn=user2,ou=People,dc=mydept,dc=mycompany

我在 ldap_search($ds,$basedn,$filter) 中尝试了不同的过滤器组合,但似乎找不到正确的组合。所以,我认为错误的不是查询,而是创建组的方式。

上面的两个 LDIF 实际上都在更新同一个条目。 第一个创建它,第二个将成员添加到组中。但是,添加的用户由可分辨名称 (DN) 引用,而 memberUID 只需要一个用户 ID。 所以他们应该是:

memberUid: user1
memberUid: user2

然后您可以使用

检查用户是否属于该组
ldap_search($ds, "cn=MyAppUsers,dc=mydept,dc=mycompany", "(memberUid=user1)")

或者您可以搜索用户所属的所有群组

ldap_search($ds, "dc=mydept,dc=mycompany", "(&(objectclass=posixGroup)(memberUid=user1))")