探索FreeDSx LDAP:纯PHP的LDAP库
LDAPA Pure PHP LDAP Library.项目地址:https://gitcode.com/gh_mirrors/lda/LDAP
项目介绍
FreeDSx LDAP是一个纯PHP编写的LDAP库,它不依赖于PHP的核心LDAP扩展。该库实现了RFC 4511中描述的大部分客户端功能,以及一些非常有限的LDAP服务器功能。此外,它还实现了来自各种RFC的其他客户端特性,如分页控制支持、VLV控制支持、服务器端排序控制、密码修改请求等。
项目技术分析
FreeDSx LDAP的核心优势在于其纯PHP实现,这意味着它可以在没有安装PHP LDAP扩展的环境中运行。该库支持通过TLS对LDAP连接进行加密(如果OpenSSL扩展可用),并提供了丰富的功能,如SASL认证、搜索过滤器、分页搜索等。此外,它还提供了详细的文档和示例代码,使得开发者可以轻松上手。
项目及技术应用场景
FreeDSx LDAP适用于需要LDAP客户端功能的PHP项目,特别是在以下场景中:
- 身份验证和授权:通过LDAP进行用户身份验证和授权。
- 目录服务:管理用户、组和其他目录对象。
- 集成第三方服务:与LDAP服务器集成,如Active Directory。
- 自定义LDAP服务器:构建基于LDAP的自定义服务器应用。
项目特点
- 纯PHP实现:不依赖于PHP的LDAP扩展,提高了兼容性和灵活性。
- 丰富的功能:支持大部分LDAP客户端功能,如分页、排序、SASL认证等。
- 易于使用:提供了详细的文档和示例代码,方便开发者快速上手。
- 安全性:支持通过TLS对LDAP连接进行加密,确保数据传输的安全性。
快速开始
通过Composer安装FreeDSx LDAP:
composer require freedsx/ldap
以下是一个简单的示例,展示了如何使用FreeDSx LDAP进行LDAP操作:
use FreeDSx\Ldap\LdapClient;
use FreeDSx\Ldap\Operations;
use FreeDSx\Ldap\Search\Filters;
$ldap = new LdapClient([
'servers' => ['dc1', 'dc2'],
'base_dn' => 'dc=example,dc=local'
]);
$ldap->startTls();
$ldap->bind('user@example.local', '12345');
$filter = Filters::and(
Filters::equal('objectClass', 'user'),
Filters::startsWith('cn', 'S'),
Filters::raw('(telephoneNumber=*)')
);
$search = Operations::search($filter, 'cn');
$paging = $ldap->paging($search, 100);
while ($paging->hasEntries()) {
$entries = $paging->getEntries();
var_dump(count($entries));
foreach ($entries as $entry) {
echo "Entry: ".$entry->getDn().PHP_EOL;
}
}
CRUD操作
FreeDSx LDAP提供了完整的CRUD操作支持,以下是一些示例:
创建
use FreeDSx\Ldap\Entry\Entry;
use FreeDSx\Ldap\Exception\OperationException;
$entry = (new Entry('cn=foo,dc=domain,dc=local'))
->set('objectClass','top', 'group')
->set('sAMAccountName', 'foo');
try {
$ldap->create($entry);
} catch (OperationException $e) {
echo sprintf('Error adding entry (%s): %s', $e->getCode(), $e->getMessage()).PHP_EOL;
}
读取
$entry = $ldap->read('cn=foo,dc=domain,dc=local');
if ($entry) {
echo $entry.PHP_EOL;
var_dump($entry->toArray());
}
更新
use FreeDSx\Ldap\Exception\OperationException;
$entry = $ldap->read('cn=foo,dc=domain,dc=local');
if (!$entry->get('telephoneNumber')) {
$entry->add('telephoneNumber', '555-555
LDAPA Pure PHP LDAP Library.项目地址:https://gitcode.com/gh_mirrors/lda/LDAP
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考