faulkj/ldapclient

一个简化连接和搜索LDAP目录的PHP类。

v1.5.5 2024-01-13 02:30 UTC

This package is auto-updated.

Last update: 2024-09-13 04:07:56 UTC


README

LDAPClient是一个旨在使LDAP操作变得简单和灵活的PHP库。从基本查询到高级LDAP功能,该库提供了一系列功能。

功能

  • 简化LDAP连接
  • 用户认证
  • 高级搜索查询
  • 调试支持

安装

composer require faulkj/ldapclient

方法和用法

LDAPClient类

__construct($server, $bindDN, $pass, $baseDN, $options)

初始化与LDAP服务器的连接。

  • $server:LDAP服务器URL
  • $bindDN:绑定DN
  • $pass:绑定密码
  • $baseDN:目录的基础DN
  • $options:要拉取的LDAP字段列表。允许进行自定义属性映射,以适应您正在与之合作的特定LDAP系统。

示例

use FaulkJ\LDAPClient

$ldap = new LDAPClient(
   "ldap.forumsys.com",
   "cn=read-only-admin,dc=example,dc=com",
   "password",
   "dc=example,dc=com",
   [
      "id" => "uid"
   ]
);

debug($dbg)

切换LDAP操作的调试输出。启用时,提供详细输出以供故障排除。

  • $dbg:启用或禁用调试的布尔值

示例

$ldap->debug(true);

返回

  • 如果没有提供参数,则返回当前调试状态
  • 如果提供了参数,则返回LDAPClient对象,允许进行方法链式调用

getJSON($filter, $attr = [], $dn = false, $fullDNs = false)

将搜索结果转换为JSON格式。

  • $filter:LDAP过滤器
  • $attr:要获取的属性
  • $dn:可选的DN以进行搜索
  • $resolveDNs:是否解析DN
  • $stayBound:是否保持绑定

示例

die($ldap->getJSON("(ou=chemist*)", ["cn", "members" => "uniquemember"], null, true));

返回:表示搜索结果的JSON格式字符串。

login($id, $pass, $attr)

认证用户并返回其属性。

  • $id:用户ID
  • $pass:密码
  • $attr:要获取的属性

示例

if($user = $ldap->login("riemann", "password", ["fullname" => "cn", "mail"])) {
   echo "{$user->fullname} successfully logged in!";
}
else echo "Invalid username or password!";

返回

  • 如果成功,则返回具有指定属性的用对象
  • 如果认证失败,则返回false
  • 如果用户未找到,则返回null

member($user, $group, $options = [])

检查用户是否是特定LDAP组或组的成员。

  • $user:要检查的用户ID
  • $group:要检查成员资格的组或组数组
  • $options:可选数组,用于额外属性映射(与默认选项合并)

示例

if($ldap->member("mathematicians", "gauss", [
   "id"     => "ou",
   "member" => "uniquemember"
])) {
   echo "gauss is a mathematician!";
}

返回

  • 如果用户是成员,则返回true
  • 如果用户不是成员,则返回false
  • 如果用户未找到,则返回null

photo($user)

检索指定用户的照片。

示例

$ldap->photo("simmons");

返回:如果可用,直接输出到屏幕的图像,如果不可用,则输出空图像

search($filter, $attr, $dn, $resolveDNs, $stayBound)

执行LDAP搜索。

  • $filter:LDAP过滤器
  • $attr:要获取的属性
  • $dn:可选的DN以进行搜索
  • $resolveDNs:是否解析DN
  • $stayBound:是否保持绑定

示例

$res = $ldap->search(
   "(ou=chemist*)",
   [
      "cn",
      "members" => "uniquemember"
   ],
   null,
   true
);
echo implode("\n", $res->members);

返回

  • 如果找到多个记录,则返回LDAP记录数组
  • 如果只找到一条记录,则返回单个LDAP记录
  • 如果没有找到记录,则返回null