wordpress กับ active directory
ก่อนหน้านี้ได้เขียนเรื่อง “เปิดใช้งานฟังก์ชั่น LDAP ให้กับ Moodle” และ “ใช้ Data Mapping ใน Moodle” ที่ทำให้ moodle ใช้งาน user จาก Active directory ได้แล้วนั้น ปรากฏว่า มีสมาชิกบางท่าน สอบถามถึงการตั้งค่า ของ CMS ต่าง ๆ รวมไปถึง wordpress ด้วย วันนี้ผมจึงได้ทดสอบการเปิดฟังก์ชั่น LDAP ให้กับ WordPress ซึ่งหากใครได้อ่านบทความ ทั้ง 2 บท ที่เอ่ยถึงข้างต้น ก็น่าจะพอคลำทางได้ไม่ยากนัก แต่ยังหากไม่เข้าใจ ก็สามารถอ่านบทความตอนนี้ได้เลยครับ
ต้องขออธิบายก่อนว่า ความแตกต่างที่เห็นได้ชัดระหว่าง moodle กับ wordpress คือ moodle มีฟังก์ชั่น ldap พร้อมอยู่แล้ว แต่ wordpress ต้องหามาติดตั้งเอง ในวันนี้ ผมได้ใช้ plugin ที่ชื่อว่า active directory integration (ณ วันที่ 7 สิงหาคม 2552 เป็นเวอร์ชั่น 0.9.6) ซึ่งสามารถดาวน์โหลดได้จากเว็บไซต์ plugins ของ wordpress ที่นี่ครับ http://wordpress.org/extend/plugins/active-directory-integration/
ควมต้องการพื้นฐานของตัว plugin มีดังนี้ครับ
* WordPress since 2.7.1
* PHP 5
* LDAP support
* OpenSSL Support for TLS (recommended)
โดยเฉพาะ LDAP Module หาเป็น php ที่ติดตั้งบนระบบปฏิบัติการวินโดว์แล้วนั้น สามารถเอาเครื่องหมายเซมิคอลอนที่ด้านหน้า extension=php_ldap.dll ออกได้เลย แต่ถ้าเป็นระบบปฏิบัติการลีนุกซ์ ต้องติดตั้งเองต่างหากนะครับ
เมื่อทำการติดตั้ง และแก้ไข Extension ของ php เป็นที่เรียบร้อยแล้ว ให้เราทำการปรับแต่งค่าของตัว Plugin ดังนี้ครับ
ล็อกอินด้วยสิทธิของ Admin แล้วเข้าไปที่ Options –› Active Directory Integration
ส่วนแรกคือ Active Directory Server
Domain Controllers คือ ชื่อโดเม็นของ Active Directory เช่นของผมมีชื่อว่า university.local
Domain Controllers university.local
Port 389 คือพอร์ตที่ใช้เชื่อมต่อไปหา Active Directory ก็ปล่อยไว้ตามค่าที่ตั้งไว้ครับ
Use TLS คือ การเชื่อมต่อที่มีความปลอดภัย หากไม่เช็คบ็อคที่ค่านี้ จะทำให้การติดต่อสื่อสารเป็นลักษณะ Plan Text คือ เห็นหมดทั้ง user name และ password เพื่อป้องกันการดักจับข้อมูล ควรอย่างยิ่งที่ต้องเช็คบ็อคที่ค่านี้ด้วยครับ
Bind User คือ user ที่มีสิทธิในการอ่านข้อมูลของ user โดยปกติก็จะเป็น administrator แต่ควรใช้เป็น user อื่นจะปลอดภัยมากกว่าครับ หากยังไม่มีการตั้งค่า user อื่นที่มีสิทธิในการอ่าน user ณ ตอนนี้ ก็ให้ใช้ administrator ในการทดสอบไปพลาง ๆ ก่อนครับ
Bind User cn=administrator,cn=users,dc=university,dc=local
Bind User Password คือ รหัสผ่านของ administrator ที่ใช้ใน Active Directory
Bind User Password *********
Base DN คือ OU ที่จะให้โปรแกรมเข้าไปอ่านค่า อันนี้ก็แล้วแต่ละองค์กรจะเป็นคนกำหนดครับ แต่ทั่วไปแล้ว ก็จะอยู่รวมกันที่ Users
Base DN ou=users,dc=rmutl,dc=local
ส่วนที่ 2 คือ User specific settings
Automatic User Creation คือการสร้าง User ในตัว WordPress หลังจากที่สมาชิก login ผ่านแล้ว หากไม่เช็คตรงนี้ ก็จะเข้าไม่ได้ครับ
Automatic User Update คือ การบังคับให้สมาชิกที่ login ผ่านเข้า เข้าหน้า Profile ทุกครั้ง เพื่อทำการอัพเดทข้อมูลส่วนตัว ถ้าไม่เช็ค ก็ไม่เป็นไรครับ
Default email domain คือ การระบุ E-Mail ของหน่วยงาน เช่น ต่อท้ายด้วย @university.local แต่หากไม่ระบุ ตัวโปรแกรมจะดึงข้อมูลจาก mail ในส่วน Attribute ของ AD เองครับ สรุป ไม่ใส่ดีกว่า
Account Suffix คือส่วนการเพิ่มเติม User เช่นผมมี user ที่ชื่อว่า teppap@university.local ผมก็ต้องพิมพ์ตามนี้ทั้งหมด แต่ถ้าเราระบุในช่องของ Account Suffix แล้ว ผมก็พิมพ์ user ของผมแค่ teppap ครับ
Account Suffix university.local
Append account suffix to new created usernames หาเช็คบ็อคตรงนี้ ระบบจะนำเอา Account Suffix มาต่อท้าย user ของเรา ด้วย และในที่สุดมันจะกลายเป็น E-Mail ของเราครับ (จะแสดงใน Profile) ดังนั้น ไม่จำเป็น ก็ไม่ต้องเช็คตรงช่องนี้ครับ
Display name คือชื่อที่จะใช้ในการแสดงผล ตรงนี้ เราสามารถแก้ไขใน Profile ได้ครับ ดังนั้น เอาค่ามาตรฐานที่ตั้งมานั่นแหละครับ (ค่าตรงนี้ หากดูใน Profile แล้วดร็อปดาวน์ลิสต์ ก็จะเข้าใจมากขึ้นครับ หรือจะดูจากบทความก่อนหน้านี้ก็ได้ครับผม)
ส่วนที่ 3 คือ Authorization
Authorize by group membership คือ การเจาะจงว่าจะให้กลุ่มไหนเข้าใช้งานได้บ้าง เช่น กลุ่มของ admin (ต้องมีการสร้างกลุ่มใน active directory ก่อนนะครับ) ถ้าไม่ใส่ มันก็จะเลือก user ทั้งหมดจาก Base DN ครับ
Role Equivalent Groups คือการกำหนด สิทธิของกลุ่มที่เข้าใช้งาน เช่น กลุ่ม admin เข้ามาใช้งาน ก็จะมีสิทธิเป็น Admin โดยทันที แต่ถ้าหากลุ่ม student เข้ามา ก็จะมีสิทธิแค่อ่าน เป็นต้น (ถ้าไม่ใส่ ก็จะได้สิทธิเป็น แค่ผู้อ่านครับ คอมเม้นต์ได้ แต่เขียนเรื่องไม่ได้)
ส่วนที่ 4 คือ Brute Force Protection
Maximum number of allowed login attempts คือ จำนวนครั้ง ที่ล็อกอินไม่ผ่านติดต่อกัน ถ้าหากเลยค่าตามจำนวนที่กำหนด User นั้น จะถูกบล็อคทันทีครับ แต่ถ้าใส่เป็น 0 (ศูนย์) ค่าการบล็อค ก็จะถูกยกเลิก
Blocking Time คือ เวลาที่จะทำการบล็อค หากล็อกอินไม่ผ่านตามจำนวนในข้อแรก
User Notification คือ การแจ้งไปยัง E-Mail ของ User นั้น ๆ ว่ามีการพยายามใช้ User ของเขาในการล็อกอิน
Admin Notification คือ การแจ้งไปยัง E-Mail ของ Admin ด้วย ว่าขณะนี้ ได้ทำการบล็อค user ที่พยายามเข้าใช้งาน แบบไม่ถูกต้องแล้ว และจะแจ้งไปยัง E-Mail ที่กำหนด ดังช่องด้านล่าง (E-mail addresses for notifications)
เมื่อกรอกข้อมูลครบตามที่ต้องการแล้ว ให้คลิ๊กที่ Save Change เพื่อทำการบันทึกค่าครับ
การทดสอบ
ให้เปิดเบราเซอร์(ล็อกเอาท์ออกจาก admin ก่อนนะครับ หากใช้เบราเซอร์ตัวเดียวกัน) แล้วคลิ๊กที่ login
ถ้าการติดตั้ง Extension ของ php ถูกต้อง ก็จะสามาถเข้าสู่หน้า Log in แต่ถ้า extension ของ php ผิดพลาด จะมีข้อความแจ้งเตือนดังนี้ครับ
Fatal error: Call to undefined function ldap_connect() in C:\AppServ\www\wordpress\wp-content\plugins\active-directory-integration\ad_ldap\adLDAP.php on line 183
ให้เรากลับไปดูการตั้งค่า extension ของ php อีกครั้ง แล้ว อย่าลืม restart service ของ apache ด้วยละครับ เมื่อแก้เสร็จแล้ว (หรือดีแล้ว)ให้คลิ๊กที่ log in อีกครั้ง
ให้กรอก user และ password ที่มีอยู่ใน Active Directory ซึ่งต้องอยู่ใน OU ตาม Base DN ด้วยนะครับ
เพียงเท่านี้ ก็จะสามารถใช้งาน wordpress ร่วมกับ Active Directory ได้แล้วครับ
บทความนี้สามารถประยุกต์ใช้กับ LDAP ได้ด้วยครับผม
2 Comments
Leave a Reply
You must be logged in to post a comment.
ferweb011
Excellent post, helped me a lot. In the group of authorization, can allow more than two groups? and if you can, what is the way to do this?, thank you very much!