ข้ามไปยังเนื้อหา

OIDC & OAuth2 Flows

OAuth2 คือโปรโตคอลสำหรับ authorization (delegated access) — ช่วยให้ client ทำงานแทนผู้ใช้โดยไม่ต้องรู้รหัสผ่าน ผลลัพธ์หลักคือ access token

OIDC (OpenID Connect) คือ identity layer ที่อยู่บน OAuth2 — เพิ่มความสามารถด้าน authentication โดยออก ID token ที่พิสูจน์ตัวตนของผู้ใช้

Keycloak ทำหน้าที่เป็น authorization server สำหรับทั้งสองโปรโตคอล โดยออก access token (OAuth2) และ ID token (OIDC)

ผู้เกี่ยวข้องในระบบ: resource owner (ผู้ใช้), client (แอปพลิเคชัน), authorization server (Keycloak), resource server (API)

Resource owner — ผู้ใช้ที่เป็นเจ้าของข้อมูลและให้สิทธิ์การเข้าถึง เมื่อผู้ใช้ login และยืนยันการให้สิทธิ์ นั่นคือ resource owner กำลังทำงานอยู่

Client — แอปพลิเคชันที่ร้องขอการเข้าถึงในนามของผู้ใช้ หรือในนามของตัวเองสำหรับ machine-to-machine client อาจเป็น SPA, แอปมือถือ, backend service, หรือ CLI tool

Authorization server — คือ Keycloak ทำหน้าที่ยืนยันตัวตนผู้ใช้ ตรวจสอบสิทธิ์ และออก token ทุก flow เริ่มและจบที่นี่

Resource server — คือ API ของคุณ รับ access token เพื่อ authorize request และไม่เคยเห็นรหัสผ่านของผู้ใช้ — ตรวจสอบแค่ token ที่ Keycloak ออกให้

บทเรียนสิ่งที่จะได้เรียน
OIDC Discovery Documentวิธีค้นหาและอ่าน discovery document ที่ Keycloak realm ทุกตัวเผยแพร่
Authorization Code Flow + PKCEขั้นตอนของ flow ที่แนะนำสำหรับ SPA และแอปมือถือ
Client Credentials Grantวิธีเรียก machine-to-machine โดยไม่มีผู้ใช้
Token Endpoint Hands-onวิธีรับและถอดรหัส token จาก Keycloak ด้วย curl
OAuth2 ให้อะไร?
OIDC เพิ่มอะไรบน OAuth2?
ในบริบทของ OAuth2 Keycloak คืออะไร?