เปิดใช้งานฟังก์ชั่น LDAP ให้กับ Moodle
Moodle เป็นซอฟต์แวร์ Open Source ที่ใช้สำหรับทำบทเรียนออนไลน์ หรือที่เรียกว่า LMS (Learning Management System) ซึ่งได้รับความนิยมอย่างแพร่หลาย เพราะครอบคลุมฟังก์ชั่นการใช้งานด้านการเีรียนออนไลน์ และง่ายต่อการใช้งาน มทร.ล้านนา ของเราเอง ก็ทำการติดตั้ง moodle อยู่หลายหน่วยงาน
แต่การ จะเข้าใช้งานแต่ละหน่วยงานนั้น ต้องใช้ username และ password ตามที่หน่วยงานนั้นกำหนด จึงเกิดปัญหาการจดจำ username และรหัสผ่าน (สมมุติมี 10 แผนก ก็ใช้คนละตัว ต้องจำ 10 username) แต่ปัญหานี้จะหมดไป ถ้าเราเรียกใช้งานฟังก์ชั่นของ LDAP ที่ติดมากับตัวของ Moodle อยู่แล้ว
ใน บทความนี้ผมจะไม่ขอเอ่ยถึงการติดตั้ง extentions ldap นะครับ (หากใครติดจริง ๆ ถามได้ครับ จะตอบเป็นกรณีพิเศษ) สิ่งที่เราต้องมีในการใช้งานคือ
- DC (Active Directory) ที่สร้างไว้เรียบร้อยแล้ว
- Moodle (ติดตั้งบนวินโดว์หรือลีนุกซ์ก็ได้ครับ)
- เวลาว่างซักนิด
มาเริ่มกันเลยครับ
- ข้าสู่ระบบด้วย username admin ของตัว moodle
คลิ๊กที่รูปเพื่อดูขนาดใหญ่
- ไปที่เมนู Users –> Authentication
- เปิดการใช้งาน LDAP Server โดยคลิ๊กที่ไอคอนลูกตา
- คลิ๊กที่ Settings
เราจะตั้งค่าการใช้งาน LDAP Server อย่างคร่าว ๆ (ให้ใช้งานได้) 3 หัวข้อหลัก ๆ ดังนี้
- LDAP Server Settings
- Host URL คือ ที่อยู่ของ DC ครับ จะใส่เป็นชื่อหรือไอพีก็ได้ แต่เขาแนะนำให้ใส่เป็นไอพี (มีหรือไม่มี ldap:// ก็ได้) เพราะถ้าใส่เป็นชื่อแล้ว บางครั้งอาจจะ lookup ไปผิดเครื่อง ตัวอย่างเช่น
- Host URL : ldap://192.168.1.10
- Version คือรุ่นของ ldap หรือ ad ครับ รุ่นใหม่ ๆ นี้เป็น 3 กันหมดแล้วครับ ดังนั้นเราก็เลือกให้เป็น 3
- Version 3
- LDAP Encoding คือ การเข้ารหัสหรือรูปแบบของตัวอักษรที่จะคุยกัน ก็ให้เป็น utf-8 ครับ ถ้าเป็นรุ่นเก่า version 2 ก็จะเป็น cp 1252 (เขาว่างั้นนะ อันนี้ผมก็ไม่ได้ทดสอบ)
- LDAP Encoding : utf-8
- Host URL คือ ที่อยู่ของ DC ครับ จะใส่เป็นชื่อหรือไอพีก็ได้ แต่เขาแนะนำให้ใส่เป็นไอพี (มีหรือไม่มี ldap:// ก็ได้) เพราะถ้าใส่เป็นชื่อแล้ว บางครั้งอาจจะ lookup ไปผิดเครื่อง ตัวอย่างเช่น
- Bind Settings
- Hide Password คือการระบุว่าจะเก็บรหัสผ่านไว้ที่ตัว moodle หรือไม่ ถ้าไม่เก็บ moodle ก็จะวิ่งไปถามที่ AD ทุกครั้ง (ให้วิ่งถามดีกว่าครับ ป้องกันการเก็บรหัสผ่านไว้หลายที่)
- Hide Password : Yes
- Distinguished name คือ ชื่อของผู้ใช้ที่มีสิทธิเรียกใช้งาน AD โดย username นั้น อย่างน้อยต้องอยู่ในกลุ่มของ Domain Admin ขึ้นไป ไม่งั้นจะไม่สามารถติดต่อได้ครับ แต่ที่สำคัญ ต้องทำการตั้งค่า cn,dc ให้ถูกต้องด้วย เอาละ คราวนี้ทุกท่านจะเริ่มส่งสัย ว่าอะไรคือ cn , dn ,ou,dc อธิบายไปยาวแน่ ๆ เอาเป็นว่า ผมมีวิธีตรวจสอบว่า จะใส่ให้ถูกต้องต้องทำแบบไหน
- ที่เครื่อง AD ให้เรียกใช้งาน Active Directory Service Interfaces หรือ adsi โดยคลิ๊กที่
- start –> run –> adsiedit.msc
- Hide Password คือการระบุว่าจะเก็บรหัสผ่านไว้ที่ตัว moodle หรือไม่ ถ้าไม่เก็บ moodle ก็จะวิ่งไปถามที่ AD ทุกครั้ง (ให้วิ่งถามดีกว่าครับ ป้องกันการเก็บรหัสผ่านไว้หลายที่)
-
-
- ที่หน้าต่าง ADSI Edit ให้แตกย่อยออกมาเรื่อย ๆ แล้วพยายามหา user administrator ที่เราต้องการใช้งาน เมื่อเลือกได้แล้ว จะเห็นช่องทางขวามือ จะมีการกำหนดค่าของ cn,dc ต่าง ๆ ให้เราจำค่านี้แหละครับ แล้วเอาไปใส่ที่ช่อง Distinguished name (โปรดระวังช่องว่าง ที่ cn และ ou ต้องตรงกับที่มีอยู่ใน AD จริง ๆ )
- Distinguished name : cn=administrator,cn=users,dc=university,dc=local
- Password คือ รหัสผ่านของ user ที่เราได้ระบุไว้ใน Distinguished name ซึ่งในที่นี้คือ administrator นั่นเอง
- Password : **********
-
- User lookup settings
- User type คือ ประเภทของ Directory Service ในที่นี้คือ AD
- User type : MsActiveDirectory
- User type คือ ประเภทของ Directory Service ในที่นี้คือ AD
-
- Contexts คือ ที่อยู่ของ Organizational Unit (รูปที่เราเห็นคล้าย ๆ โฟลเดอร์นั่นแหละครับ) ซึ่งเราต้องระบุให้ถูกต้อง เพราะนั่นจะเป็นตำแหน่งที่จะให้ moodle เข้าไปค้นหารายชื่อผู้ใช้งาน หากไม่รู้ว่าอยู่ที่ไหน ก็ให้เปิด Active Directory user and computer กรณีที่ต้องการระบุเฉพาะเจาะจง ก็ให้ระบุ OU ตามที่ต้องการได้เลยครับ แต่ถ้าจะให้ค้นหาใน OU ไหนก็ได้ ระบุ OU นอกสุดก็พอครับ
- Contexts : ou=user accounts,dc=university,dc=local
- Contexts คือ ที่อยู่ของ Organizational Unit (รูปที่เราเห็นคล้าย ๆ โฟลเดอร์นั่นแหละครับ) ซึ่งเราต้องระบุให้ถูกต้อง เพราะนั่นจะเป็นตำแหน่งที่จะให้ moodle เข้าไปค้นหารายชื่อผู้ใช้งาน หากไม่รู้ว่าอยู่ที่ไหน ก็ให้เปิด Active Directory user and computer กรณีที่ต้องการระบุเฉพาะเจาะจง ก็ให้ระบุ OU ตามที่ต้องการได้เลยครับ แต่ถ้าจะให้ค้นหาใน OU ไหนก็ได้ ระบุ OU นอกสุดก็พอครับ
-
- Search Subcontexts คือ การให้ค้นหา OU ย่อย จากที่ได้ระบุไว้ใน Contexts (ดูรูปประกอบครับ จะเห็นมี OU ย่อย ใน User Accounts อีกที)
- Search Subcontexts : Yes
- Derelicence aliases คือ การตั้งชื่อเสมือนของบุคคลทั่วไปที่ไม่ได้อยู่ในระบบ (อันนี้ผมก็ยังไม่เคยใช้งานเหมือนกันครับ)
- Derelicence aliases : No
- User Attribute คือ คุณลักษณะของ User ถ้าเป็น AD แล้ว ให้ใช้ sAMAccountName ครับ (บางแห่งบอกว่าใช้ cn ก็ได้) แต่ระวังการใช้งานนะครับ เพราะ sAMAccountName นี้ ใช้งานได้สูงสุด 20 ตัวอักษรครับ
- User Attribute : sAMAccountName
- Member Attribute คือ คุณลักษณะของสมาชิก
- Member Attribute : member
- Member Attribute user dn คือ การยอมให้/ยกเลิก user ที่อยู่ในกลุ่มเดียวกันกับที่ระบุไว้ใน Distinguished name ใช้งานได้หรือไม่
- Member Attribute user dn : 1 **ไม่จำเป็นต้องกรอกและไม่มีผลกับ user ทั่วไป
- Object Class คือ การระบุ สมาชิก ว่าให้ค้นหาจากอะไร ใน ad เราเรียก username ว่า user
- Object Class : user
- Search Subcontexts คือ การให้ค้นหา OU ย่อย จากที่ได้ระบุไว้ใน Contexts (ดูรูปประกอบครับ จะเห็นมี OU ย่อย ใน User Accounts อีกที)
เมื่อปรับแต่งค่าเรียบร้อยแล้วให้ทำการบันทึกข้อมูล โดยคลิ๊กที่ Save change ตรงด้านล่างสุด
แล้วให้ทำการ logout เพื่อทำการทดสอบครับ
จากนั้นให้คลิ๊กที่ login อีกครั้ง แล้วกรอก username และ password ที่ใช้งานได้จริงใน ad
กรณีที่ไม่ผ่าน จะมีข้อมความแจ้งเตือนดังนี้ (อาจจะไม่เหมือนกัน) ให้เข้าไปดูการปรับแต่งค่าอีกครั้งหนึ่ง
กรณีที่ผ่าน จะปรากฎหน้าต่างให้กรอกรายละเอียดส่วนตัว เป็นอันว่าเสร็จสิ้นครับ
คราวนี้ก็สามารถใช้งานร่วมกันได้แล้วครับ ไม่ว่าจะมีกี่เครื่อง จะมีกี่เว็บ ก็จะใช้ username และ password ชุดเดียวกันทั้งหมด