ปัญหา OpenID delegation ใน Drupal 6.x

Written by Waipot on March 16, 2008 – 8:10 am

ผมได้รับคอมเมนต์จาก คุณเอก (iake.blogspot.com) เรื่อง ปัญหา OpenID delegation กับ Drupal 6.x [อ่านบทความ]

พบว่าไม่สามารถใช้ OpenID delegation ในการลอกอินเข้าเวบไซต์ได้ โดยจะพบข้อความแจ้งข้อผิดพลาด ตามรูปด้านล่างนี้

drupal-deleg

ปัญหานี้ได้ถูกพูดคุยกันในกลุ่มผู้พัฒนา Drupal แล้ว [link]  และมีคนเสนอวิธีแก้ปัญหาพร้อมทำ patch ไว้ แต่ผมลองแล้วไม่สำเร็จ ยังแก้ปัญหานี้ไม่ได้ ซึ่งต้องติดตามการเคลื่อนไหวของกลุ่มผู้พัฒนากันต่อไป หากท่านมีข้อชี้แนะประการใด อย่าลังเลที่จะบอกผม

แต่ OpenID แบบทั่วไป สามารถใช้งานได้กับ Drupal ตามปกติ

[Update 17/03/2008, 9:16PM] แนะนำโดยคุณ kamthorn จากคอมเมนต์

ผมเคยเจอปัญหา แต่แก้โดยเอาเครื่องหมายขึ้นบรรทัดใหม่ภายใน tag ออก เช่นเดิม ผมก็อปปี้ตัวอย่างมาแก้เลย
<link rel="openid.server"
href="http://www.myopenid.com/server" />
<link rel="openid.delegate"
href="http://username.myopenid.com/" />
สามารถใช้ได้กับทุกไซต์ยกเว้น drupal แต่พอเอาตัวขึ้นบรรทัดใหม่ออก
<link rel="openid.server" href="http://www.myopenid.com/server" />
<link rel="openid.delegate" href="http://username.myopenid.com/" />
ก็สามารถใช้ได้ตามปกติครับ

[Update 17/03/2008, 9:30PM] ปัญหากับ Blogger Template

ผมพบสาเหตุหนึ่ง ซึ่งเกิดจากการสลับที่ระหว่าง rel และ href ซึ่งเป็น attribute ใน link โดยผมพยายามใส่ โค๊ดข้างล่างนี้ใน <HEAD> ของ Blogger Template

<link rel=’openid.server’ href=’http://www.thaiid.net/index.php/serve’/>
<link rel=’openid.delegate’ href=’http://www.thaiid.net/?user=username’/>

แต่ระบบ Template ของ Blogger เอง พยามจัดโค๊ดใหม่ โดย สลับที่ระหว่าง rel และ href ใน link ซึ่งผมได้

<link href=’http://www.thaiid.net/index.php/serve’ rel=’openid.server’/>
<link href=’http://www.thaiid.net/?user=username’ rel=’openid.delegate’/>

ซึ่งแบบหลังไม่สามารถใช้งานได้กับ Drupal (ผมได้ทดสอบกับ OpenID ทั้งของ http://thaiid.net และ http://www.myopenid.com แล้ว ผลคือเหมือนกัน)

[Update 18/03/2008, 7:58AM] แก้ปัญหาการเรียงลำดับระหว่าง rel และ href ใน Blogger Template โดยคุณเอก (iake.blogspot.com)

Tags: ,
Posted under Talk | 9 Comments »

Drupal 6 กับ OpenID

Written by Waipot on February 25, 2008 – 9:50 am

เมื่อเร็วๆ นี้ Drupal 6 ระบบ CMS ยอดนิยม ได้ถูกปล่อยออกมาให้โยลโฉมกันแล้ว สิ่งที่ทำให้ผมรู้สึกตื่นเต้นก็คือว่า ในเวอร์ชันใหม่นี้ Drupal 6 ได้รวมเอาระบบ OpenID Sign-in เข้าเป็น Core Module ซึ่งพร้อมใช้งานได้ในทันทีที่ติดตั้งเสร็จ โดยไม่จำเป็นต้องดาวน์โหลด module เพิ่มเติมแต่อย่างใด โดย module นี้จะสนับสนุน OpenID 2.x ผมก็ไม่รอช้าที่จะทดสอบการใช้งาน โดยในที่นี้ผมจะไม่กล่าวถึงวิธีการติดตั้ง Drupal 6 ขอให้ท่านที่สนใจ ติดตามอ่านได้ใน http://linux.sothorn.org/ ซึ่งผู้เขียนนั้นบรรยายไว้อย่างระเอียดแล้ว

การตั้งค่า

การจะทำให้เวบไซต์ที่อยู่บนระบบ Drupal 6 นี้ เปิดรับการลอกอินด้วย OpenID จากผู้ใช้ต่างๆ นั้นมีขั้นตอนง่ายๆ ดังนี้

1. หลังจากติดตั้ง Drupal 6 เสร็จแล้ว ลอกอินด้วยบัญชีผู้ดูแลระบบ

2. อนุญาติให้ผู้ใช้สามารถสมัครสมาชิกได้เสียก่อน โดยปกติ Drupal จะติดตั้งตัวเลือกนี้มาให้อยู่แล้ว คุณสามารถข้ามขั้นตอนนี้ไปได้เลย แต่คุณสามารถตรวจสอบได้ โดยไปที่ Administer -› User management -> User settings แล้วเลือกตัวเลือกที่ 2 หรือ 3 ตามรูปด้านล่างนี้ แล้วคลิ๊กปุ่ม Save configuration

drupal6openid4

3. เปิด OpenID module โดยไปที่ Administer -› Site building -> Modules มองหา Core - optional แล้วเลือกตรง OpenID ตามรูปด้านล่างนี้ แล้วคลิ๊กปุ่ม Save configuration

drupal6openid5

4. ออกจากระบบของบัญชีผู้ดูแลระบบ แล้วไปยังหน้าแรกของเวบไซต์ สังเกตตรงแบบฟอร์มลอกอินจะมีตัวเลือก Log in using OpenID เพิ่มเติมขึ้นมา คลิ๊กแล้วจะเจอแบบฟอร์มตามรูปด้านล่างนี้ ซึ่งตรงนี้ผู้ใช้สามารถลอกอินได้ด้วย OpenID

drupal6openid1

การใช้งาน

ผมได้ทดสอบการใช้งาน OpenID module ของ Drupal 6 นี้ โดยการลอกอินด้วย OpenID จาก myopenid.com, openid.yahoo.com และ thaiid.net พบว่ามันทำงานได้ดี แต่มันไม่รับรอง OpenID จาก Blogger.com ซึ่งเป็น OpenID 1.1 ในที่นี้ผมจะขอยกตัวอย่างการลอกอินด้วย OpenID จาก thaiid.net เนื่องจากต้องการสนับสนุน OpenID ของคนไทย

ผมลอกอินด้วย http://www.thaiid.net/waipot ซึ่งเป็น OpenID ของผมที่ได้สมัครไว้กับ thaiid.net หลังจากลอกอินผ่าน OpenID module ตัวนี้จะไปดึงข้อมูลจาก OpenID provider ซึ่งก็คือ thaiid.net และจะทำการสมัครบัญชีผู้ใช้ของเราให้โดยอัตโนมัติ โดยจะใช้ nick name ใน OpenID เป็น user name ของ Drupal แต่หากเกิดข้อผิดพลาดอย่าง เช่น user name ซ้ำ ระบบก็จะขอให้เราเปลี่ยนข้อมูลใหม่ เราจะเจอหน้าตามรูปด้านล่างนี้

drupal6openid2

เมื่อเสร็จขั้นตอนการสมัครนี้แล้ว เราจะพบหน้าจัดการบัญชีผู้ใช้ของตัวเอง ตามรูปด้านล่างนี้ โดยผู้ใช้แต่ละคนก็จะมี user name กับ password ซึ่งสามารถใช้ลอกอินได้ด้วยวิธีปกติ ที่เพิ่มเติมมาก็คือที่ OpenID identities ซึ่งก็คือ OpenID ประจำตัวของผู้ใช้แต่ละคน ตรงนี้เราสามารถลบ หรือ เพิ่ม OpenID เข้าไปทีหลังได้มากกว่าหนึ่ง OpenID ดังนั้น เราจึงมีทางเลือกในการลอกอิน คือ แบบปกติ และ ใช้ OpenID

drupal6openid3

การที่ Drupal ได้นำ OpenID เข้าเป็น Core module ทำให้เวบไซต์ที่ใช้ระบบ CMS ตัวนี้ เปิดรับการลอกอินได้ด้วย OpenID จึงถือว่าเป็นการทำให้ การใช้งาน OpenID ฝั่ง consumer มีมากขึ้น

Tags: , ,
Posted under Talk | 4 Comments »