แอปบุคคลที่สาม (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
- ไปที่ Console > Applications
- คลิกปุ่ม “Create application” เลือก “Third-party app” เป็นประเภทแอปพลิเคชัน และเลือกหนึ่งในโปรโตคอลการผสานรวมต่อไปนี้:
- OIDC / OAuth
- เลือกประเภทแอปพลิเคชันตามประเภทของแอปบุคคลที่สาม:
- Traditional Web: แอปพลิเคชันที่เรนเดอร์ฝั่งเซิร์ฟเวอร์ (เช่น Node.js, PHP, Java) ที่สามารถเก็บ client secret ไว้ที่ backend ได้อย่างปลอดภัย
- Single Page App (SPA): แอปพลิเคชันที่เรนเดอร์ฝั่ง client (เช่น React, Vue, Angular) ที่ทำงานในเบราว์เซอร์และไม่สามารถเก็บ secret ได้อย่างปลอดภัย
- Native: แอปพลิเคชันมือถือหรือเดสก์ท็อป (เช่น iOS, Android, Electron) ที่ทำงานบนอุปกรณ์ของผู้ใช้
- กรอกชื่อและคำอธิบายสำหรับแอปของคุณแล้วคลิกปุ่ม “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) การตั้งค่าจะง่ายมาก:
- เปิดหน้าตั้งค่า IdP หรือ SSO ของบริการนั้น
- คัดลอก Client ID (และ Client secret หากจำเป็น) จาก Logto ไปวางในหน้าตั้งค่าของบริการ
- ระบุ Discovery endpoint หากบริการรองรับ OIDC auto-discovery หรือคัดลอก Authorization endpoint และ Token endpoint ด้วยตนเอง
- คัดลอก Redirect URI จากหน้าตั้งค่าของบริการและเพิ่มลงใน allowed redirect URIs ของแอป Logto ของคุณ
- ตั้งค่า scopes หากบริการนั้นอนุญาต เนื่องจาก Logto เป็น OIDC provider ให้เพิ่ม scope
openidหากคุณต้องการยืนยันตัวตนผู้ใช้ (จะได้รับ ID token และ endpoint UserInfo) scopeopenidเป็นตัวเลือกหากคุณต้องการเพียง OAuth resource access
บริการจะจัดการ flow ของ OAuth / OIDC ให้อัตโนมัติเมื่อกำหนดค่าเสร็จ
ผสานรวมผ่านโปรโตคอล OAuth / OIDC
หากแอปพลิเคชันบุคคลที่สามต้องการผสานรวมกับ Logto เป็น IdP แบบโปรแกรม ควรใช้ Authorization Code Flow มาตรฐาน เราแนะนำให้ใช้ไลบรารี client OAuth 2.0 / OIDC สำหรับภาษาที่คุณใช้เพื่อจัดการการทำงานนี้
- Traditional web
- Single page app / Native
แอปเว็บแบบดั้งเดิมเป็น confidential clients ที่สามารถเก็บ client secret ไว้ที่ backend server ได้อย่างปลอดภัย ดูรายละเอียดการใช้งานเต็มที่ได้ที่ Authorization Code Flow
ขั้นตอนสำคัญ:
- เริ่มต้นการอนุญาต: เปลี่ยนเส้นทางผู้ใช้ไปที่ authorization endpoint ของ Logto พร้อม
client_id,redirect_uri,response_type=codeและscope - จัดการ callback: รับ authorization
codeจาก redirect - แลกเปลี่ยนโทเค็น: จาก backend ของคุณ POST ไปที่ token endpoint พร้อม code,
client_idและclient_secret
Single page app และ Native app เป็น public clients ที่ไม่สามารถเก็บ secret ได้อย่างปลอดภัย แทนที่จะใช้ client secret แอปเหล่านี้ต้องใช้ PKCE (Proof Key for Code Exchange) เพื่อความปลอดภัย ดูรายละเอียดการใช้งานเต็มที่ได้ที่ Authorization Code Flow และ PKCE
ขั้นตอนสำคัญ:
- สร้างพารามิเตอร์ PKCE: สร้าง
code_verifierและแปลงเป็นcode_challenge(SHA-256) - เริ่มต้นการอนุญาต: เปลี่ยนเส้นทางผู้ใช้ไปที่ authorization endpoint พร้อม
code_challengeและcode_challenge_method=S256 - จัดการ callback: รับ authorization
codeจาก redirect - แลกเปลี่ยนโทเค็น: POST ไปที่ token endpoint พร้อม code และ
code_verifierเดิม
ผสานรวมผ่าน 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 บุคคลที่สาม
เพื่อความปลอดภัย แอป OIDC บุคคลที่สามทั้งหมดจะถูกเปลี่ยนเส้นทางไปยัง หน้าขอความยินยอม (consent screen) เพื่อขอการอนุญาตจากผู้ใช้หลังจากได้รับการยืนยันตัวตนโดย Logto
สิทธิ์โปรไฟล์ผู้ใช้ ที่แอปบุคคลที่สามร้องขอ, ขอบเขตทรัพยากร API, สิทธิ์องค์กร และข้อมูลสมาชิกองค์กรทั้งหมดจะแสดงบนหน้าขอความยินยอม
สิทธิ์ที่ร้องขอเหล่านี้จะถูกอนุญาตให้กับแอปบุคคลที่สามก็ต่อเมื่อผู้ใช้คลิกปุ่ม “Authorize”

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