यह इस पुस्तकालय के साथ एक शुद्ध पीएचपी 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 समर्थन ग्राहक के लिए।
ओपनएलडीएपी को [बैकएंड के रूप में SQL डेटाबेस का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है] (http://www.openldap.org/doc/admin24/backends.html) सीधे। यह मूल ओपनएलएपी बीडीबी के रूप में पूरी तरह से विशेष रूप से प्रदर्शित नहीं है, लेकिन PHP की एक पंक्ति के बिना आपकी आवश्यकताओं को पूरा कर सकता है। (जो एक लंबे एलडीएपी सर्वर के लिए कार्यान्वयन भाषा का पहला विकल्प नहीं होगा, लंबे शॉट से नहीं। :) – sarnold
मैंने बैक-एसक्यूएल थोड़ी देर पहले काम करने की कोशिश की थी लेकिन आखिर में छोड़ दिया क्योंकि मैं इसे भी नहीं मिला ठीक से संकलित करने के लिए। असल में हमारे पास PHP/MySQL पर आधारित एक सीआरएम है, और किसी भी तरह से हमें संपर्क पुस्तिका के रूप में संपर्क थंडरबर्ड में उपलब्ध कराने की आवश्यकता है। मुझे लगता है कि हम एक असली एलडीएपी सर्वर का उपयोग कर सकते हैं और हमारे सीआरएम (क्लाइंट के रूप में) एलडीएपी डेटाबेस अपडेट कर सकते हैं, लेकिन यह वास्तव में अक्षम है। मुझे आश्चर्य है कि थंडरबर्ड के लिए JSON पता पुस्तिका प्लग-इन बनाना आसान हो सकता है, और एलडीएपी को पूरी तरह से छोड़ सकता है? – Nick