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

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

การผสานรวมแอปพลิเคชันบุคคลที่สามของ Logto ช่วยให้คุณใช้ Logto เป็น ผู้ให้บริการข้อมูลระบุตัวตน (Identity Provider; 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 บุคคลที่สาม

หากคุณเชื่อมต่อกับบริการหรือผลิตภัณฑ์ที่รองรับการตั้งค่า 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 resource access

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

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

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

แอปเว็บแบบดั้งเดิมเป็น 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

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

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

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

บันทึก:

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

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

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

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

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

consent screen

ดำเนินการต่อ

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

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

วิธีจัดการ:

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

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