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

แอปบุคคลที่สาม (OAuth / OIDC)

การผสานรวมแอปพลิเคชันบุคคลที่สามของ Logto ช่วยให้คุณใช้ Logto เป็น ผู้ให้บริการข้อมูลระบุตัวตน (IdP) สำหรับแอปพลิเคชันภายนอก

ผู้ให้บริการข้อมูลระบุตัวตน (IdP) คือบริการที่ตรวจสอบตัวตนของผู้ใช้และจัดการข้อมูลรับรองการเข้าสู่ระบบของพวกเขา หลังจากยืนยันตัวตนของผู้ใช้แล้ว IdP จะสร้างโทเค็นการยืนยันตัวตนหรือ assertion และอนุญาตให้ผู้ใช้เข้าถึงแอปพลิเคชันหรือบริการต่าง ๆ ได้โดยไม่ต้องเข้าสู่ระบบซ้ำอีก

แตกต่างจากแอปพลิเคชันที่คุณสร้างในคู่มือ ผสานรวม Logto เข้ากับแอปของคุณ ซึ่งคุณเป็นผู้พัฒนาและควบคุมโดยสมบูรณ์ แอปพลิเคชันบุคคลที่สามเป็นบริการอิสระที่พัฒนาโดยนักพัฒนาภายนอกหรือพันธมิตรทางธุรกิจ

แนวทางการผสานรวมนี้เหมาะกับสถานการณ์ทางธุรกิจทั่วไป คุณสามารถเปิดให้ผู้ใช้เข้าถึงแอปของพันธมิตรโดยใช้บัญชี Logto ของตนเอง เช่นเดียวกับที่ผู้ใช้ระดับองค์กรลงชื่อเข้าใช้ Slack ด้วย Google Workspace หรือคุณสามารถสร้างแพลตฟอร์มเปิดที่แอปบุคคลที่สามสามารถเพิ่มฟีเจอร์ “Sign in with Logto” ได้ คล้ายกับ “Sign in with Google”

Logto เป็นบริการข้อมูลระบุตัวตนที่สร้างขึ้นบนโปรโตคอล OpenID Connect (OIDC) โดยให้ทั้ง การยืนยันตัวตน (Authentication) และ การอนุญาต (Authorization) การผสานรวมแอป OIDC บุคคลที่สามจึงง่ายเหมือนกับแอปเว็บทั่วไป

เนื่องจาก OIDC สร้างขึ้นบน OAuth 2.0 โดยเพิ่มชั้นการยืนยันตัวตน คุณจึงสามารถผสานรวมแอปบุคคลที่สามด้วยโปรโตคอล OAuth ได้เช่นกัน

สองวิธีในการเชื่อมต่อแอปบุคคลที่สาม

  • ลงทะเบียนแอปใน Logto (คู่มือนี้): คุณสร้างแอปพลิเคชันและกำหนดสิทธิ์กับ redirect URI ใช้เมื่อคุณรู้จักพันธมิตรของคุณ
  • Dynamic app: ไคลเอนต์เชื่อมต่อได้โดยไม่ต้องลงทะเบียนล่วงหน้า โดยใช้ URL HTTPS สาธารณะที่ให้ metadata document ของตนเองเป็น client ID ใช้เมื่อไคลเอนต์ใด ๆ อาจเชื่อมต่อ เช่น MCP clients และ AI agents

ทั้งสองวิธีสามารถใช้ร่วมกันได้

สร้างแอปพลิเคชันบุคคลที่สามใน Logto

  1. ไปที่ Console > Applications
  2. คลิกปุ่ม "Create application" เลือก "Third-party app" เป็นประเภทแอปพลิเคชัน และเลือกโปรโตคอลการผสานรวมต่อไปนี้:
    • OIDC / OAuth
  3. เลือกประเภทแอปพลิเคชันตามประเภทของแอปบุคคลที่สาม:
    • Traditional Web: แอปที่เรนเดอร์ฝั่งเซิร์ฟเวอร์ (เช่น Node.js, PHP, Java) ที่สามารถเก็บ client secret ไว้ที่ backend ได้อย่างปลอดภัย
    • Single Page App (SPA): แอปที่เรนเดอร์ฝั่ง client (เช่น React, Vue, Angular) ที่ทำงานในเบราว์เซอร์และไม่สามารถเก็บ secret ได้อย่างปลอดภัย
    • Native: แอปมือถือหรือเดสก์ท็อป (เช่น iOS, Android, Electron) ที่ทำงานบนอุปกรณ์ของผู้ใช้
  4. กรอกชื่อและคำอธิบายสำหรับแอปของคุณ แล้วคลิกปุ่ม "Create" จะมีการสร้างแอปพลิเคชันบุคคลที่สามใหม่

แอปพลิเคชันบุคคลที่สามที่สร้างขึ้นทั้งหมดจะถูกจัดหมวดหมู่ในหน้า Applications ภายใต้แท็บ "Third-party apps" การจัดเรียงนี้ช่วยให้คุณแยกแยะออกจากแอปของคุณเองและจัดการแอปทั้งหมดได้ง่ายขึ้นในที่เดียว

หากต้องการจำกัดว่าผู้ใช้ใดสามารถลงชื่อเข้าใช้แอปบุคคลที่สาม ให้กำหนดค่า การควบคุมการเข้าถึงระดับแอป ในแท็บ Rules ของแอปพลิเคชัน

คู่มือการผสานรวม

ค้นหาค่าคอนฟิกของแอปพลิเคชัน

ในหน้ารายละเอียดแอปพลิเคชัน คุณจะพบ Client ID, Client secret (สำหรับแอปเว็บแบบดั้งเดิมเท่านั้น) และ endpoint OIDC ที่จำเป็นสำหรับการผสานรวม

หากบริการบุคคลที่สามรองรับ OIDC discovery เพียงแค่ให้ Discovery endpoint หากไม่รองรับ ให้คลิก Show endpoint details เพื่อดู endpoint ทั้งหมด รวมถึง authorization endpoint และ token endpoint

ผสานรวมกับบริการที่รองรับ IdP บุคคลที่สาม

หากคุณเชื่อมต่อกับบริการหรือผลิตภัณฑ์ที่รองรับการตั้งค่า external identity provider โดยตรง (เช่น แพลตฟอร์ม SaaS สำหรับองค์กร, เครื่องมือ collaboration) การตั้งค่าจะง่ายมาก:

  1. เปิดหน้าตั้งค่า IdP หรือ SSO ของบริการนั้น
  2. คัดลอก Client ID (และ Client secret หากจำเป็น) จาก Logto ไปวางในหน้าตั้งค่าของบริการ
  3. ให้ Discovery endpoint หากบริการรองรับ OIDC auto-discovery หรือคัดลอก Authorization endpoint และ Token endpoint ด้วยตนเอง
  4. คัดลอก Redirect URI จากหน้าตั้งค่าของบริการและเพิ่มเข้าไปใน allowed redirect URIs ของแอป Logto ของคุณ
  5. กำหนดค่า scopes หากบริการรองรับ เนื่องจาก Logto เป็น OIDC provider ให้เพิ่ม scope openid หากต้องการยืนยันตัวตนผู้ใช้ (จะได้รับ ID token และ endpoint UserInfo) scope openid เป็นตัวเลือกหากต้องการเข้าถึงทรัพยากร OAuth เท่านั้น

บริการจะจัดการ flow ของ OAuth / OIDC ให้อัตโนมัติเมื่อกำหนดค่าเสร็จ

ผสานรวมผ่านโปรโตคอล OAuth / OIDC

หากแอปพลิเคชันบุคคลที่สามต้องการผสานรวมกับ Logto เป็น IdP แบบโปรแกรม ควรใช้ Authorization Code Flow มาตรฐาน เราแนะนำให้ใช้ไลบรารี OAuth 2.0 / OIDC สำหรับภาษาโปรแกรมของคุณเพื่อจัดการการใช้งาน

แอปเว็บแบบดั้งเดิมเป็น confidential clients ที่สามารถเก็บ client secret ไว้ที่ backend ได้อย่างปลอดภัย ดูรายละเอียดการใช้งานเต็มที่ได้ที่ Authorization Code Flow

ขั้นตอนสำคัญ:

  1. เริ่มต้นการอนุญาต: เปลี่ยนเส้นทางผู้ใช้ไปยัง authorization endpoint ของ Logto พร้อม client_id, redirect_uri, response_type=code และ scope
  2. จัดการ callback: รับ authorization code จาก redirect
  3. แลกเปลี่ยนโทเค็น: จาก backend ของคุณ POST ไปยัง token endpoint พร้อม code, client_id และ client_secret

ผสานรวมผ่าน device flow

สำหรับแอปพลิเคชันบุคคลที่สามแบบ native ที่ทำงานบนอุปกรณ์ที่จำกัดการป้อนข้อมูล (เช่น สมาร์ททีวี, เกมคอนโซล, CLI tools) การใช้ authorization code flow แบบ redirect อาจไม่เหมาะสม ในกรณีนี้ แอปสามารถใช้ OAuth 2.0 Device Authorization Grant แทนได้

ด้วย device flow อุปกรณ์จะแสดง user code และ verification URL ผู้ใช้จะไปที่ URL ดังกล่าวบนอุปกรณ์อื่น (เช่น โทรศัพท์, แล็ปท็อป) กรอก code และดำเนินการยืนยันตัวตนที่นั่น อุปกรณ์จะ poll token endpoint ของ Logto จนกว่าการอนุญาตจะเสร็จสมบูรณ์

บันทึก:

ก่อนใช้งาน device flow อย่าลืมกำหนด สิทธิ์ ที่จำเป็นสำหรับแอปบุคคลที่สามของคุณใน Logto Console แอปบุคคลที่สามที่ร้องขอ scope ที่ไม่ได้เปิดใช้งานจะถูกปฏิเสธการเข้าถึง

ดู Device flow quick start สำหรับรายละเอียดการใช้งาน

เพื่อความปลอดภัย แอป OIDC บุคคลที่สามทั้งหมดจะถูกเปลี่ยนเส้นทางไปยัง หน้าขอความยินยอม (consent screen) เพื่อขอการอนุญาตจากผู้ใช้หลังจากได้รับการยืนยันตัวตนโดย Logto แล้ว

สิทธิ์โปรไฟล์ผู้ใช้ ที่แอปบุคคลที่สามร้องขอ, ขอบเขตทรัพยากร API, สิทธิ์องค์กร และข้อมูลสมาชิกองค์กรทั้งหมดจะแสดงบนหน้าขอความยินยอม

สิทธิ์ที่ร้องขอเหล่านี้จะถูกอนุมัติให้แอปบุคคลที่สามก็ต่อเมื่อผู้ใช้คลิกปุ่ม "Authorize" เท่านั้น

consent screen

การดำเนินการถัดไป

คำถามที่พบบ่อย

Logto ใช้การควบคุมการเข้าถึงตามบทบาท (RBAC) เพื่อจัดการสิทธิ์ของผู้ใช้ บนหน้าขอความยินยอมจะแสดงเฉพาะ scope (สิทธิ์) ที่ผู้ใช้ได้รับผ่านบทบาทของตนแล้วเท่านั้น หากแอปบุคคลที่สามร้องขอ scope ที่ผู้ใช้ไม่มี จะไม่แสดงเพื่อป้องกันการอนุญาตที่ไม่ได้รับอนุญาต

แนวทางการจัดการ:

กรณีศึกษา: ผสานรวม Apache Answer เพื่อสร้างคอมมูนิตี้สำหรับผู้ใช้ของคุณ

การใช้ Logto เป็นผู้ให้บริการข้อมูลระบุตัวตน (IdP) สำหรับบุคคลที่สาม