OAuth2.0 vs OpenID
OAuth 2.0 และ OpenID Connect (OIDC) เป็น Protocol ที่เกี่ยวข้องกับการ User Authentication กับ แต่มีความเป็น Protocol ที่แพร่หลายและนิยมใช้กันซึ่งสามารถเพิ่ม Security ให้กับ Application ของคุณให้ได้ตาม Security Standard
OAuth 2.0
OAuth 2.0 ถูกออกแบบมาเพื่อให้ Client Application สามารถเข้าถึง Resource ของผู้ใช้ใน Server ได้โดยไม่ได้ให้ข้อมูลตัวตนของผู้ใช้ แต่เน้นการให้สิทธิ์แก่ Application ในการเข้าถึงข้อมูลบางส่วน เช่น เข้าถึงไฟล์ รูปภาพ หรือข้อมูลในระบบต่าง ๆ โดยใช้ "Token"
หลักการทำงานคือให้สิทธิ์ Application ที่ได้รับการอนุญาตจากผู้ใช้ โดยส่ง "Access Token" ให้ Application ซึ่ง Access Token นี้ใช้เพื่อเรียกข้อมูลจาก Resource Server
ตัวอย่างการใช้งาน
Application ต้องการเข้าถึงข้อมูลไฟล์ใน Google Drive
ผู้ใช้ เข้าสู่ Application ซึ่ง App ต้องการเข้าถึง File ใน Google Drive ของผู้ใช้
Application ส่งคำขออนุญาตไปที่ Google เพื่อรับสิทธิ์การเข้าถึงไฟล์ของผู้ใช้ (ผ่าน Authorization Server ของ Google)
Google แสดงหน้าให้ผู้ใช้ยืนยันว่า Application สามารถเข้าถึง File ได้หรือไม่
ผู้ใช้ อนุญาตให้ Application เข้าถึงข้อมูล
Google ส่ง Authorization Code กลับมาให้ Application
Application นำ Authorization Code ไปขอแลกเป็น Access Token จาก Google
Google ส่ง Access Token กลับมา
Application นำ Access Token ไปเรียกข้อมูล File จาก Google Drive API
Google Drive ตรวจสอบ Access Token ว่ามีสิทธิ์หรือไม่ และส่งข้อมูลไฟล์กลับไปให้ Application
ตัวอย่าง Request
ตัวอย่าง Response
ตัวอย่าง Sequence diagram
OpenID Connect (OIDC)
OIDC เป็นส่วนขยายของ OAuth 2.0 โดยเพิ่ม Function การตรวจสอบตัวตนเข้าไป นอกเหนือจากการอนุญาต OIDC ช่วยให้ Application สามารถยืนยันตัวตนของผู้ใช้ได้ (เช่น รู้ว่าใครคือผู้ใช้นั้นจริงๆ) โดยใช้ "ID Token" เพื่อระบุข้อมูลตัวตนของผู้ใช้
หลักการทำงานคือนอกจาก Access Token ที่ได้จาก OAuth 2.0 แล้ว OIDC ยังเพิ่ม "ID Token" ซึ่งใช้สำหรับบอกข้อมูลตัวตนของผู้ใช้ เช่น ชื่อ, อีเมล, หรือรหัสผู้ใช้ในระบบได้อย่างปลอดภัย
ตัวอย่างการใช้งาน
Application ต้องการตรวจสอบตัวตนผู้ใช้ผ่านการ Login ด้วย Google
ผู้ใช้ เข้าสู่ Application ซึ่งต้องการให้ผู้ใช้ Login ด้วย Google (เช่น "Sign in with Google")
Application ส่งคำขอไปยัง Google เพื่อให้ผู้ใช้ Login ผ่าน Google
Google แสดงหน้าให้ผู้ใช้ Login
ผู้ใช้ กรอกข้อมูล Login และยืนยัน
Google ส่ง Authorization Code กลับไปให้ Application
Application นำ Authorization Code ไปขอแลกเป็น ID Token และ Access Token จาก Google
Google ส่ง ID Token และ Access Token กลับไปให้ Application
Application ใช้ ID Token เพื่อตรวจสอบตัวตนของผู้ใช้ว่าใครคือผู้ใช้ (ข้อมูลภายใน ID Token จะมีข้อมูลเช่น ชื่อผู้ใช้, อีเมล, หรือรหัสผู้ใช้ในระบบ)
Application แสดงข้อมูลหรือให้บริการตามสิทธิ์ที่ผู้ใช้ได้อนุญาต
ตัวอย่าง Request
ตัวอย่าง Response
หากเราเอา value จาก filed "id_token" มา decoded จะได้ข้อมูลของผู้ใช้เพิ่มเติม
ตัวอย่าง Sequence diagram
สรุปความแตกต่างในการใช้งาน
ใน OAuth 2.0, Application จะได้รับ Access Token เพื่อเข้าถึง Resource ของผู้ใช้ แต่ไม่ได้รับข้อมูลตัวตนของผู้ใช้โดยตรง
ใน OIDC, Application นอกจากจะได้รับ Access Token แล้ว ยังได้รับ ID Token ซึ่งสามารถใช้เพื่อยืนยันตัวตนของผู้ใช้ได้
Last updated
Was this helpful?