ใช้ Data Mapping ใน Moodle

จากการแนะนำการใช้งาน LDAP ใน moodle กับ Active Directory ในครั้งก่อน ช่วยให้การใช้งานเป็นไปอย่างง่ายดาย เพราะใช้ username และ password จาก Active Directory ได้โดยตรง แต่ยังไม่ได้ปรับแต่งให้ดึงข้อมูลที่เป็นชื่อ – สกุล และ e-mail มาใช้งาน ซึ่งใน moodle เรียกการดึงข้อมูลนี้ว่า Data Mappings

Data Mappings ของ moodle คือ การดึงข้อมูลจาก MS Active Directory 2003 server ในฟิลด์ที่เราต้องการ ในที่นี้จะใช้งานหลัก ๆ (สำหรับผมเอง)อยู่ 3 ฟิลด์ด้วยกันคือ

First Name คือ  ชื่อ

Surname คือ นามสกุล

และ Email address คือ e-mail ของคนนั้น ๆ

โดยที่ข้อมูลทั้งหมด จะอยู่ใน AD ซึ่งจะช่วยให้ผู้ใช้งานไม่ต้องกรอกข้อมูลใด ๆ เพิ่มเติม login เข้าไป ก็ใช้งานได้ทันที

ให้เราเข้าไปยังส่วนของ LDAP Server เลื่อนลงมาด้านล่างจะพบกับหัวข้อ DATA MAPPING ให้เราทำการกรอกข้อมูลดังนี้

First Name -> givenName
Surname -> sn
Email address -> mail

moodle-mapping
** มีข้อแม้เดียวคือ ต้องผ่านการใช้งาน LDAP มาก่อน หรือเชื่อมต่อกับ LDAP เสร็จสมบูรณ์แล้ว จึงจะสามารถใช้งานได้

เมื่อกรอกข้อมูลเสร็จเรียบร้อย ให้ทำการบันทึก แล้วล็อกอินด้วยชื่ออื่น ที่มีอยู่ใน Active Directory จะพบว่า ระบบจะดึงชื่อที่มีอยู่ใน Active Directory มาใช้งาน (ต้องเป็น user ที่ยังไม่เคยล็อกอินมาก่อนเท่านั้น เพราะ moodle จะเก็บ Profile ของคนที่ล็อกอินแล้วไว้ในระบบด้วย ดังนั้นจะไม่พบการเปลี่ยนแปลง ให้ลบ user นั้น ๆ ออกจาก moodle จึงจะเห็นการเปลี่ยนแปลง)

ผลลัพธ์ที่ได้คือ

listname

ดูได้จากเมนูของผู้ดูแลระบบ Users –> Accounts –> Browse list of users

หากมีการล็อคอินเข้ามา ก็จะพบ ชื่อ – สกุล และ E-Mail ตามที่มีอยู่ใน AD ครับ

ตัวอย่างอื่น ๆ หรือดูข้อมูลจากเว็บไซต์นี้ครับ http://www.computerperformance.co.uk/Logon/LDAP_attributes_active_directory.htm

CN – Common Name CN=Guy Thomas.  Actually, this LDAP attribute is made up from givenName joined to SN.
description What you see in Active Directory Users and Computers.  Not to be confused with displayName on the Users property sheet.
displayName displayName = Guy Thomas.  If you script this property, be sure you understand which field you are configuring.  DisplayName can be confused with CN or description.
DN – also distinguishedName DN is simply the most important LDAP attribute.
CN=Jay Jamieson, OU= Newport,DC=cp,DC=com
givenName Firstname also called Christian name
homeDrive Home Folder : connect.  Tricky to configure
name name = Guy Thomas.  Exactly the same as CN.
objectCategory Defines the Active Directory Schema category. For example, objectClass = Person
objectClass objectClass = User.  Also used for Computer, organizationalUnit, even container.  Important top level container.
physicalDeliveryOfficeName Office! on the user’s General property sheet
profilePath Roaming profile path: connect.  Trick to set up
sAMAccountName sAMAccountName = guyt.  Old NT 4.0 logon name, must be unique in the domain.  Can be confused with CN.
SN SN = Thomas. This would be referred to as last name or surname.
userAccountControl Used to disable an account.  A value of 514 disables the account, while 512 makes the account ready for logon.
userPrincipalName userPrincipalName = guyt@CP.com    Often abbreviated to UPN, and looks like an email address.  Very useful for logging on especially in a large Forest.   Note UPN must be unique in the forest.



เปิดใช้งานฟังก์ชั่น LDAP ให้กับ Moodle

moodle-logoMoodle เป็นซอฟต์แวร์ Open Source ที่ใช้สำหรับทำบทเรียนออนไลน์ หรือที่เรียกว่า LMS (Learning Management System) ซึ่งได้รับความนิยมอย่างแพร่หลาย เพราะครอบคลุมฟังก์ชั่นการใช้งานด้านการเีรียนออนไลน์ และง่ายต่อการใช้งาน มทร.ล้านนา ของเราเอง ก็ทำการติดตั้ง moodle อยู่หลายหน่วยงาน

แต่การ จะเข้าใช้งานแต่ละหน่วยงานนั้น ต้องใช้ username และ password ตามที่หน่วยงานนั้นกำหนด จึงเกิดปัญหาการจดจำ username และรหัสผ่าน (สมมุติมี 10 แผนก ก็ใช้คนละตัว ต้องจำ 10 username) แต่ปัญหานี้จะหมดไป ถ้าเราเรียกใช้งานฟังก์ชั่นของ LDAP ที่ติดมากับตัวของ Moodle อยู่แล้ว

ใน บทความนี้ผมจะไม่ขอเอ่ยถึงการติดตั้ง extentions ldap นะครับ (หากใครติดจริง ๆ ถามได้ครับ จะตอบเป็นกรณีพิเศษ) สิ่งที่เราต้องมีในการใช้งานคือ

  • DC (Active Directory) ที่สร้างไว้เรียบร้อยแล้ว
  • Moodle (ติดตั้งบนวินโดว์หรือลีนุกซ์ก็ได้ครับ)
  • เวลาว่างซักนิด


มาเริ่มกันเลยครับ

  • ข้าสู่ระบบด้วย username admin ของตัว moodle

moodle04

คลิ๊กที่รูปเพื่อดูขนาดใหญ่

  • ไปที่เมนู Users –> Authentication
  • เปิดการใช้งาน LDAP Server โดยคลิ๊กที่ไอคอนลูกตา
  • คลิ๊กที่ Settings

moodle05

เราจะตั้งค่าการใช้งาน 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
  • 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

moodle02

moodle03

      • ที่หน้าต่าง 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 : **********

moodle06

  • User lookup settings
    • User type คือ ประเภทของ Directory Service ในที่นี้คือ AD
      • User type :  MsActiveDirectory
    • Contexts คือ ที่อยู่ของ Organizational Unit (รูปที่เราเห็นคล้าย ๆ โฟลเดอร์นั่นแหละครับ) ซึ่งเราต้องระบุให้ถูกต้อง เพราะนั่นจะเป็นตำแหน่งที่จะให้ moodle เข้าไปค้นหารายชื่อผู้ใช้งาน หากไม่รู้ว่าอยู่ที่ไหน ก็ให้เปิด Active Directory user and computer กรณีที่ต้องการระบุเฉพาะเจาะจง ก็ให้ระบุ OU ตามที่ต้องการได้เลยครับ แต่ถ้าจะให้ค้นหาใน OU ไหนก็ได้ ระบุ OU นอกสุดก็พอครับ
      • Contexts : ou=user accounts,dc=university,dc=local

moodle01

    • 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

เมื่อปรับแต่งค่าเรียบร้อยแล้วให้ทำการบันทึกข้อมูล โดยคลิ๊กที่ Save change ตรงด้านล่างสุด

แล้วให้ทำการ logout เพื่อทำการทดสอบครับ

จากนั้นให้คลิ๊กที่ login อีกครั้ง แล้วกรอก username และ password ที่ใช้งานได้จริงใน ad

กรณีที่ไม่ผ่าน จะมีข้อมความแจ้งเตือนดังนี้ (อาจจะไม่เหมือนกัน) ให้เข้าไปดูการปรับแต่งค่าอีกครั้งหนึ่ง

moodle07

กรณีที่ผ่าน จะปรากฎหน้าต่างให้กรอกรายละเอียดส่วนตัว เป็นอันว่าเสร็จสิ้นครับ

moodle08

moodle09

คราวนี้ก็สามารถใช้งานร่วมกันได้แล้วครับ ไม่ว่าจะมีกี่เครื่อง จะมีกี่เว็บ ก็จะใช้ username และ password ชุดเดียวกันทั้งหมด




ปัญหาเครื่องแม่ข่ายรับภาระไม่ไหว

linuxสำนักส่งเสริมวิชาการและงานทะเบียนเปิดให้ นักศึกษาที่ต้อง การลงทะเบียนภาคฤดูร้อน ทุกคน (ทั้งผู้ที่ยื่นขอเปิด และไม่ได้ยื่นขอเปิดรายวิชา)  ลงทะเบียนพร้อมกัน  ตั้งแต่วันที่ 29 มีนาคม – 3 เมษายน 2552 ทางอินเตอร์เน็ตเท่านั้นหากพ้นกำหนดจะเรียกร้องสิทธิ ใดๆ ภายหลังไม่ได้

จากการตรวจสอบ พบว่า มีการคิวรี่ข้อมูล จากฐานข้อมูลของสำนักส่งเสริมวิชาการและงานทะเบียน ที่มีลักษณะเลือกทั้งหมด

ยกตัวอย่างเช่น Select * From dbname

ขณะนี้ได้ประสานงานกับสำนักส่งเสริมวิชาการและงานทะเบียน ให้ปรับปรุงโค๊ด เพื่อให้เครื่องแม่ข่ายรับภาระลดลง และสามารถรองรับจำนวนนักศึกษาที่เข้าลงทะเบียนได้มากขึ้น




Warning: session_start() [function.session-start]:

Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by (output started at C:AppServwwwaaaindex.php:2) in C:AppServwwwaaaindex.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at C:AppServwwwaaaindex.php:2)
in C:AppServwwwaaaindex.php on line 2

upload ขึ้น server แล้วมีปัญหาดังนี้

เพราะบนเครื่อง localhost path เก็บมันจะเป็น

session.save_path = “C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp”

วิธีแก้ไขให้ไปแก้ไข file php.ini ของตัว server ด้วย

session.save_path = “C:/Temp”      *****หรือ temp directory ที่มีอยู่จริง เช่น C:WINDOWSTemp

หลังจากนั้นให้ restart apache ก็จะสามารถใช้งานได้ตามปกติ