Saturday 2 June 2012

Yahoo! OAuth Authorization Flow

ผมลองหาข้อมูลเกี่ยวกับเรื่อง Flow การทำงานของ OAuth เพื่อจะนำมาใช้อธิบาย พอดีไปเจอของทาง Yahoo! เค้าเขียนอธิบายไว้ค่อนข้างละเอียด ดูแล้วเข้าใจไม่ยาก ก็เลยอยากเอามายกเป็นตัวอย่างให้ดูกันครับ แล้วยังไงไว้จะลองหา OAuth ของ Platform อื่นมาเปรียบเทียบให้ดูกันนะครับ


ใน Diagram จะแบ่งการทำงานออกเป็น 3 ส่วนด้วยกัน ส่วนแรกเป็นของ Application ส่วนถัดมาเป็นของ Yahoo! และส่วนสุดท้ายเป็นของ User การทำงานใน Diagram ดังกล่าว สรุปขั้นตอนได้ดังนี้

1. Application ลงทะเบียนเพื่อขอ Cosumer Key กับ Yahoo!

2. Yahoo! สร้าง Cosumer Key + API Secret ให้กับ Application

3. Application ทำการ call API ของ Yahoo! เพื่อขอ Token (ในขั้นตอนนี้ต้องใช้ Consumer Key ที่ได้จากการละทะเบียนในขั้นตอนแรก)

4. Yahoo! ส่งค่า Request Token กลับมาให้ Application

5. Application จะทำการ Redirect User ไปยัง Yahoo! เพื่อทำการ Authorize (เพื่อให้สิทธิ์แก่ Application ตามที่ได้ร้องขอไปในขั้นตอนที่ 3)

6. User ทำการ Authorize (อนุญาติให้ Application สามารถเข้าถึงข้อมูลได้ ตามที่ขอมา)

7. Yahoo! จะทำการ Redirect User กลับไปยัง Application พร้อมกับส่ง outh_verifier กลับไปให้ด้วย

8. Application จะนำ Request Token กับ oauth_verifier ไปขอ access_token ผ่านทางคำสั่ง get_token

9. Yahoo! คืนค่า Access Token กลับไปให้ Application พร้อมเวลาหมดอายุ

10. Application เรียกใช้งาน Yahoo! API จนกว่า Access Token จะหมดอายุ

11. เมื่อ Access Token หมดอายุ Application จะเรียกคำสั่ง get_token เพื่อขอ Access_Token ใหม่

12. Yahoo! คืนค่า Access Token ใหม่ พร้อมเวลาหมดอายุ กลับไปให้ Application

จากตัวอย่าง เป็น Flow การใช้งาน OAuth ของ Application ที่เรียกใช้งาน Yahoo! API แต่สามารถนำแนวคิดไปประยุกต์ใช้งานในการพัฒนากับ API Platform รายอื่นๆได้เช่นเดียวกัน เพราะว่า OAuth เป็น Protocol ที่เป็นมาตรฐาน

ผมอยากให้ค่อยๆศึกษาและทำความเข้าใจ Diagram ถ้าอ่านแล้วยังไม่เข้าใจ ก็ให้กลับไปอ่านใหม่จนกว่าจะเข้าใจ เพราะทาง Yahoo! เค้าเขียนตั้งใจอธิบายไว้ค่อนข้างละเอียด เข้าใจได้ไม่ยาก เพราะถ้าหากเข้าใจการทำงานของ Diagram นี้แล้ว นั่นหมายความว่าคุณพร้อมที่จะใช้งาน OAuth สำหรับ Platform อื่นๆด้วยเช่นเดียวกัน

No comments:

Post a Comment