OAuth 2.1

ให้แอปอื่นรับผู้ใช้เข้าสู่ระบบด้วยบัญชี Bot-Hosting ได้ เหมือน Sign in with Discord สร้างบน OAuth 2.1 และ PKCE ไคลเอนต์ OAuth มาตรฐานทุกตัวจึงใช้งานได้

ใช้ API key เพื่อควบคุมบัญชีของคุณเอง ใช้ OAuth เมื่อสร้างแอปที่ทำงานกับบัญชีของคนอื่น เพื่อให้พวกเขาเข้าสู่ระบบและให้ความยินยอมแทนการวางคีย์ ผู้ช่วย AI อย่าง ChatGPT เชื่อมต่อผ่านขั้นตอนนี้เช่นกัน

ขั้นตอนการทำงาน

  1. 01 สร้างแอป ลงทะเบียนชื่อและ redirect URI ในการตั้งค่านักพัฒนา คุณจะได้ client_id สาธารณะ โดยไม่มี secret
  2. 02 ส่งผู้ใช้ไปอนุญาต เปลี่ยนเส้นทางไปที่ /oauth/authorize พร้อม PKCE ผู้ใช้เข้าสู่ระบบและอนุมัติขอบเขตสิทธิ์
  3. 03 แลก code เป็น Token ผู้ใช้กลับมาพร้อม code ให้ POST ไปที่ token endpoint เพื่อรับ access token
  4. 04 เรียก API ในนามผู้ใช้ ส่ง Token เป็น Bearer ไปที่ /api/v1 และรีเฟรชเบื้องหลัง

Endpoint

Endpointวัตถุประสงค์
GET /oauth/authorizeหน้าจอขอความยินยอมจากผู้ใช้ เปิดในเบราว์เซอร์
POST /api/oauth/tokenแลก code เป็น Token หรือรีเฟรช Token
POST /api/oauth/registerDynamic Client Registration (RFC 7591) ไม่บังคับ
GET /.well-known/oauth-authorization-serverเมทาดาทาสำหรับ Discovery
GET /.well-known/oauth-protected-resourceเมทาดาทาของทรัพยากร ใช้โดยไคลเอนต์ MCP

อายุของ Token

Authorization code 10 นาที ใช้ได้ครั้งเดียว ผูกกับ PKCE
Access token 7 วัน Bearer สำหรับการเรียก /api/v1
Refresh token 30 วัน เปลี่ยนใหม่ทุกครั้งที่ใช้

การรีเฟรช

ทุกครั้งที่รีเฟรชจะได้ Refresh token ใหม่และเพิกถอนอันเก่า ให้เขียนทับค่าที่เก็บไว้เสมอ หากการรีเฟรชคืน invalid_grant ให้ส่งผู้ใช้กลับไปเริ่มที่ขั้นตอนที่ 1

ความปลอดภัย

  • เก็บ Token ฝั่งเซิร์ฟเวอร์ ผูกกับผู้ใช้ของคุณ อย่าส่งไปยังเบราว์เซอร์หรือรีโพซิทอรีสาธารณะ
  • Token จะถูกเพิกถอนทันทีที่ผู้ใช้ตัดการเชื่อมต่อแอปของคุณ
  • ใช้ redirect URI แบบ https ใน Production ส่วน http ใช้ได้สำหรับการทดสอบในเครื่อง
  • Token ของ OAuth ไม่ให้สิทธิ์ผู้ดูแลระบบเลย ไม่ว่าจะอนุมัติขอบเขตสิทธิ์ใด