หน้าเว็บ

วันพฤหัสบดีที่ 5 กันยายน พ.ศ. 2556

OAuth คืออะไร เอาไว้ทำอะไร ?

มารู้จัก OAuth กันครับ วันนี้เอาแค่ให้รู้ก่อน ว่ามันคืออะไร? เอาไว้ทำอะไร

OAuth ได้ยินฝรั่งอ่านว่า "โอออท" (จาก tutorial ใน youtube) ย่อมาจาก Open Authentication ซึ่งปัจจุบันเป็น version 2 หรือ OAuth 2.0

OAuth เป็นมาตรฐาน ที่ใช้สำหรับการกำหนดสิทธิ์ให้ application หนึ่งสามารถร้องขอทรัพยากรของผู้ใช้จาก application หนึ่งได้โดยที่ application นั้นไม่จำเป็นต้องทราบรหัสผ่านของผู้ใช้ 





ยกตัวอย่าง เช่น

        user คือ redcrow และ application ผู้ให้บริการคือ facebook ซึ่งเป็น application ที่ redcrow เคยไปลงทะเบียน หรือ register ไว้ จากนั้น redcrow ไปใช้งาน application อื่นคือ foursquare ซึ่ง redcrow ไม่เคยลงทะเบียน  แต่ redcrow อยากเข้าใช้งาน foursquare โดยไม่อยากลงทะเบียนใหม่  (redcrow อยากใช้ user ที่มีอยู่ใน facebook login เข้าใช้งาน foursquare เลย) redcrow เลยทำการร้องขอ เพื่อไป login ที่ facebook โดยผ่านทาง foursquare จากนั้น foursquare ก็จะส่งคำขอนั้นไปยัง facebook เพื่อให้ redcrow ทำการ login  จากนั้น redcrow ก็ login ที่ facebook

        เมื่อ login เสร็จ facebook ก็จะส่งรหัสพิเศษชุดนึง กลับมาให้ foursquare เรียกว่า access token เพื่อให้ foursquare ใช้ access token นี้ในการเข้าถึงข้อมูลของ redcrow ที่อยู่บน facebook  การ login ด้วยวิธีนี้ ทำให้ foursquare ไม่ทราบรหัสผ่านของ redcrow เนื่องจาก redcrow ไป login ที่ facebook นั่นเอง  


        access token นั้นจะมีอายุการใช้งาน  ว่าใช้ได้ในระยะเวลาเท่าใด  ซึ่งถ้าหมดเวลาหรือ expire  foursquare ก็ต้องไปขอ access token ชุดใหม่จาก facebook ซึ่งจะเรียกว่าการ refresh token เพื่อใช้สำหรับขอข้อมูลของ redcrow ต่อไป  เป็นเช่นนี้ไปเรื่อยๆ  จนกว่า redcrow  จะ logout ออกจากระบบ  


        หรือบางครั้ง facebook อาจจะให้ทำการ login ใหม่ทุกครั้งที่ access token expire ทั้งนี้  ขึ้นอยู่กับว่า facebook อนุญาตให้ขอ token ใหม่ได้กี่ครั้ง ต่อการ login 1 ครั้ง



        กระบวนการนี้แหล่ะครับที่เขาเรียกกันว่า OAuth  ซึ่งผมมั่นใจว่าทุกคนเคยใช้ครับ  แต่อาจจะยังไม่รู้ว่ามันคืออะไร  และทำงานยังไง 


ข้อกำหนดหรือมาตรฐาน OAuth 2.0 http://tools.ietf.org/html/rfc6749


วันนี้เอาแค่นี้ก่อนน่ะครับ เดี๋ยวจะค่อยๆ ลึกไปถึงรายละเอียดปลีกย่อยครับ หวังว่าคงพอเคลียร์ข้อสงสัยที่มีต่อ OAuth กันน่ะครับ 

3 ความคิดเห็น: