วิธีการเชื่อมต่อ PSU Passport ด้วย Drupal6 ผ่าน LDAPS Module LDAP integration
ทดสอบบน : Windows 2008 R2 / IIS 7.5 / Drupal 6.34 / LDAP integration 6.x-1.x-dev
ขั้นตอนการติดตั้ง Module LDAP integration และการตั้งค่า Module
1. โหลด Module จาก Web Site : http://drupal.org/project/ldap_integration
2. ทำการติดตั้ง Module ตามปกติ (Copy วางไว้ใน Directory Modules)
3. Login เข้าไปเปิด Module (Administer->Site building->Modules->LDAP integration)
4. ทำการ Enable Module ดังรูป
5. กลับไปยังหน้า Administer จะปรากฎหัวข้อ LDAP ในหัวข้อ Site Configuration
6. เมื่อเข้าไปจะปรากฎหัวข้อย่อยให้ตั้งค่าดังรูป
7. ทำการตั้งค่า Authentication
-> Settings
เนื่องจาก Module นี้ Default เป็นโหมด Bind and Search ซึ่งต้องสังเวย Account (อาจจะขอมาทางศูนย์คอมให้สร้าง Application Account ได้ครับ) ซึ่งค่า DN ได้มาอย่างไร สามารถตรวจสอบได้จาก https://passport.psu.ac.th/aspldap/
โดยสามารถ Add ได้มากกว่า 1 server เพื่อสำรองในกรณีที่ Server หลักตายครับ
สำหรับวิธีการใช้งานแบบ Bind Direct ที่ไม่ต้องใช้ User ในการ Search (ไม่ต้องใช้ Application Account) ต้องแก้ไข Code ดังนี้
ไฟล์ ldapauth.module (แก้ไขส่วนที่ 1)
แก้บรรทัดประมาณบรรทัดที่ 565
if (!($ldap = _ldapauth_user_lookup($name)) || !isset($ldap[‘dn’]))
เป็นข้อความดังนี้
... function _ldapauth_auth($name, $pass, $create_account = FALSE) { global $_ldapauth_ldap; // Don't allow empty passwords because they cause problems on some setups. // http://drupal.org/node/87831 if (empty($pass)) return FALSE; // Cycle through LDAP configurations. First one to succeed wins. $result = db_query("SELECT sid FROM {ldapauth} WHERE status = 1 ORDER BY weight"); while ($row = db_fetch_object($result)) { // Initialize LDAP. if (!_ldapauth_init($row->sid)) return FALSE; // Look up the user in LDAP. // if (!($ldap = _ldapauth_user_lookup($name)) || !isset($ldap['dn'])) if (!($ldap = _ldapauth_user_lookup($name,$pass)) || !isset($ldap['dn'])) continue; ...
ไฟล์ ldapauth.module (แก้ไขส่วนที่ 2)
แก้บรรทัดประมาณบรรทัดที่ 614
$success = $_ldapauth_ldap->connect($_ldapauth_ldap->getOption(‘binddn’), $_ldapauth_ldap->getOption(‘bindpw’));
เป็นข้อความดังนี้
... function _ldapauth_user_lookup($name,$pass) { global $_ldapauth_ldap; if (!$_ldapauth_ldap) return; // Transform login name. $login_name = ($code = _ldapauth_ldap_info($_ldapauth_ldap->getOption('sid'), 'login_php')) ? eval($code) : $name; // If there is no bindn and bindpw - the connect will be an anonymous connect. // $success = $_ldapauth_ldap->connect($_ldapauth_ldap->getOption('binddn'), $_ldapauth_ldap->getOption('bindpw')); $success = $_ldapauth_ldap->connect($name."@psu", $pass); ...
โดยหลังจากแก้ไขแล้วไม่จำเป็นต้องใส่ Application Account และ Password ดังรูป
สำหรับผู้ที่ต้องการไฟล์ที่แก้แล้วโหลดได้ที่
https://passport.psu.ac.th/ldap/ldap_integration.7z
password : psuldap123$%
Leave a Reply