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

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

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

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

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

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

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

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

สร้างแอปพลิเคชันบุคคลที่สามใน 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" การจัดเรียงนี้ช่วยให้คุณแยกแยะออกจากแอปของคุณเองและจัดการแอปทั้งหมดได้ง่ายขึ้นในที่เดียว

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

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

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

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

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

หากคุณเชื่อมต่อกับบริการหรือผลิตภัณฑ์ที่รองรับการตั้งค่าผู้ให้บริการข้อมูลระบุตัวตนภายนอกโดยตรง (เช่น แพลตฟอร์ม 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 ให้เพิ่ม scope openid หากคุณต้องการยืนยันตัวตนผู้ใช้ (จะได้รับ ID token และ endpoint UserInfo) scope openid เป็นตัวเลือกหากคุณต้องการเข้าถึงทรัพยากร OAuth เท่านั้น

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

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

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

แอปพลิเคชันเว็บแบบดั้งเดิมเป็น confidential clients ที่สามารถเก็บ client secret ไว้ที่ backend server ได้อย่างปลอดภัย ดูรายละเอียดการใช้งานเต็มที่ได้ที่ 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

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

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

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

consent screen

การดำเนินการเพิ่มเติม

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

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

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

  • กำหนด บทบาทระดับโกลบอล หรือ บทบาทองค์กร พร้อมขอบเขตเฉพาะ
  • มอบหมายบทบาทให้ผู้ใช้ตามความต้องการในการเข้าถึง
  • ผู้ใช้จะได้รับขอบเขตจากบทบาทโดยอัตโนมัติ

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

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