php - 需要与 PHP 一起使用的组的 LDIF
问题描述
使用 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 查询(以及其他)
我认为我在创建小组时犯了一个错误。
我应该创建一个组织角色、组还是 posixGroup?由于最终目标是检查哪些用户有权使用其中的哪些应用程序和功能(添加/更新/删除/等),所以我会说organizationRole 是要做的事情。目前,我使用:
组.ldif:
dn: cn=MyAppUsers,dc=mydept,dc=mycompany
objectClass: top
objectclass: posixGroup
cn: Authorized App1 Users
description: Users allowed to use App1
用户.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))")
推荐阅读
- sql-server - 如何将 .net MVC 项目及其数据库从本地主机部署到实时托管
- angular - 是否有与 React Fiber 等效的 Angular?
- ios - 在给定 4 个角位置的情况下,无法编写算法来填充平铺地图
- javascript - 我可以阻止外部模块组件按钮的事件在 Angular(5) 中发生吗?
- java - 如何在 JSP 中动态检索和显示图像?
- javascript - 如何向 React-Select 添加更多可搜索选项?
- php - Codeigniter - 像查询不使用搜索字符串
- javascript - 获取 URL 的最后两个参数 - javascript
- xamarin - 属性绑定中的跨度文本绑定错误
- regex - Python正则表达式抛出AttributeError:'NoneType'对象没有属性'group'