আপনি ভাববেন যে কেবল অ্যাক্টিভ ডিরেক্টরিতে কোনও ব্যবহারকারীকে প্রমাণীকরণ করা লাইব্রেরির প্রয়োজন ছাড়াই পিএইচপি-তে এলডিএপি ব্যবহার করা একটি সহজ সাধারণ প্রক্রিয়া হবে। তবে এমন অনেকগুলি বিষয় রয়েছে যা এটিকে দ্রুত জটিল করে তুলতে পারে:
- আপনাকে অবশ্যই ইনপুটটি বৈধ করতে হবে। একটি ফাঁকা ব্যবহারকারীর নাম / পাসওয়ার্ড অন্যথায় পাস করবে।
- বাঁধার সময় আপনার ব্যবহারকারীর নাম / পাসওয়ার্ড সঠিকভাবে এনকোড করা উচিত তা নিশ্চিত করা উচিত।
- আপনার টিএলএস ব্যবহার করে সংযোগটি এনক্রিপ্ট করা উচিত।
- অপ্রয়োজনীয়তার জন্য পৃথক এলডিএপি সার্ভার ব্যবহার করা যদি কোনওটি ডাউন থাকে।
- প্রমাণীকরণ ব্যর্থ হলে একটি তথ্যবহুল ত্রুটি বার্তা পাওয়া।
উপরোক্ত সমর্থন করে একটি এলডিএপি লাইব্রেরি ব্যবহার করা বেশিরভাগ ক্ষেত্রেই এটি সহজতর। আমি শেষ পর্যন্ত আমার নিজস্ব লাইব্রেরি ঘূর্ণায়মান শেষ করেছি যা উপরের সমস্ত বিষয়গুলি পরিচালনা করে: এলডিপটুলস (ভাল, কেবল প্রমাণীকরণের জন্য নয়, এটি আরও অনেক কিছু করতে পারে)। এটি নিম্নলিখিতগুলির মতো ব্যবহার করা যেতে পারে:
use LdapTools\Configuration;
use LdapTools\DomainConfiguration;
use LdapTools\LdapManager;
$domain = (new DomainConfiguration('example.com'))
->setUsername('username') # A separate AD service account used by your app
->setPassword('password')
->setServers(['dc1', 'dc2', 'dc3'])
->setUseTls(true);
$config = new Configuration($domain);
$ldap = new LdapManager($config);
if (!$ldap->authenticate($username, $password, $message)) {
echo "Error: $message";
} else {
// Do something...
}
উপরে প্রমাণীকরণ কলটি করবে:
- বৈধতা দিন যে ব্যবহারকারীর নাম বা পাসওয়ার্ড খালি নেই।
- ব্যবহারকারী নাম / পাসওয়ার্ড সঠিকভাবে এনকোড করা আছে তা নিশ্চিত করুন (ডিফল্টরূপে ইউটিএফ -8)
- যদি কোনটি নিচে থাকে তবে বিকল্প এলডিএপি সার্ভার ব্যবহার করে দেখুন।
- TLS ব্যবহার করে প্রমাণীকরণের অনুরোধটি এনক্রিপ্ট করুন।
- এটি ব্যর্থ হলে অতিরিক্ত তথ্য সরবরাহ করুন (যেমন লক / অক্ষম অ্যাকাউন্ট, ইত্যাদি)
এটি করার জন্য অন্যান্য লাইব্রেরি রয়েছে (যেমন অ্যাডলডাপ ২)। তবে, আমি কিছু অতিরিক্ত তথ্য সরবরাহ করার পক্ষে যথেষ্ট বাধ্য হয়েছি বলে সর্বাধিক আপ-ভোট দেওয়া উত্তরটি আসলে কোনও ইনপুট বৈধতা না করা এবং টিএলএস ব্যবহার না করে নির্ভর করা এক সুরক্ষা ঝুঁকি।