它可以創建與此庫純PHP LDAP服務器(我寫它最初是爲LDAP客戶端的目的):
https://github.com/FreeDSx/LDAP
它的工作原理的請求處理器(只是一個接口)的基礎上,爲客戶請求。基本上,你擴展了一個類來處理客戶端請求併發迴響應(無論如何都是搜索)。一個基本的例子:
- 創建請求處理機延伸在庫中的通用請求處理程序:
namespace Foo;
use FreeDSx\Ldap\Server\RequestHandler\GenericRequestHandler;
class LdapRequestHandler extends GenericRequestHandler
{
/**
* @var array
*/
protected $users = [
'user' => '12345',
];
/**
* Validates the username/password of a simple bind request
*
* @param string $username
* @param string $password
* @return bool
*/
public function bind(string $username, string $password): bool
{
return isset($this->users[$username]) && $this->users[$username] === $password;
}
/**
* Override the search request. This must send back an entries object.
*
* @param RequestContext $context
* @param SearchRequest $search
* @return Entries
*/
public function search(RequestContext $context, SearchRequest $search): Entries
{
// Do your logic here with the search request, return entries...
return new Entries(
Entry::create('cn=Foo,dc=FreeDSx,dc=local', [
'cn' => 'Foo',
'sn' => 'Bar',
'givenName' => 'Foo',
]),
Entry::create('cn=Chad,dc=FreeDSx,dc=local', [
'cn' => 'Chad',
'sn' => 'Sikorra',
'givenName' => 'Chad',
])
);
}
}
- 使用請求處理程序,創建一個LDAP服務器過程在端口389偵聽客戶:
use FreeDSx\Ldap\LdapServer;
use Foo\LdapRequestHandler;
$server = new LdapServer([ 'request_handler' => LdapRequestHandler::class ]);
$server->run();
有在服務器比較多文檔圖書館的onent這裏:
https://github.com/FreeDSx/LDAP/tree/master/docs/Server
一些注意事項,以這樣的:
- 目前國內還沒有針對服務器
- 目前沒有辦法從請求處理程序返回控制回分頁/ VLV支持給客戶。
OpenLDAP可以直接配置爲[使用SQL數據庫作爲後端](http://www.openldap.org/doc/admin24/backends.html)。它不像原生OpenLDAP BDB那樣功能全面,但可能不需要一行PHP即可滿足您的需求。 (這不會是我的新的LDAP服務器的實現語言的第一選擇,而不是一個遠射。:) – sarnold 2011-05-18 03:50:33
我曾嘗試讓back-sql工作一段時間,但最終放棄了,因爲我甚至無法得到它妥善編譯。基本上我們有一個基於PHP/MySQL的CRM,不知何故,我們需要將聯繫人作爲通訊錄提供給Thunderbird。我想我們可以使用一個真正的LDAP服務器,讓我們的CRM(作爲客戶端)更新LDAP數據庫,但這看起來效率很低。我想知道爲Thunderbird創建JSON地址簿插件是否更容易,並且完全跳過LDAP? – Nick 2011-05-18 17:50:16