wordpress กับ active directory

image_pdfimage_print

wordpressก่อนหน้านี้ได้เขียนเรื่อง “เปิดใช้งานฟังก์ชั่น 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 อีกครั้ง

login

ให้กรอก user และ password ที่มีอยู่ใน Active Directory ซึ่งต้องอยู่ใน OU ตาม Base DN ด้วยนะครับ

เพียงเท่านี้ ก็จะสามารถใช้งาน wordpress ร่วมกับ Active Directory ได้แล้วครับ

บทความนี้สามารถประยุกต์ใช้กับ LDAP ได้ด้วยครับผม

profile

2 Comments

  1. 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!

Leave a Reply