แอปบุคคลที่สาม (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
- ไปที่ 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" การจัดเรียงนี้ช่วยให้คุณแยกแยะออกจากแอปของคุณเองและจัดการแอปทั้งหมดได้ง่ายขึ้นในที่เดียว
หากต้องการจำกัดว่าผู้ใช้ใดสามารถลงชื่อเข้าใช้แอปพลิเคชันบุคคลที่สาม ให้กำหนดค่า การควบคุมการเข้าถึงระดับแอป ในแท็บ Rules ของแอปพลิเคชันนั้น
คู่มือการผสานรวม
ค้นหาค่าคอนฟิกของแอปพลิเคชัน
ในหน้ารายละเอียดแอปพลิเคชัน คุณจะพบ Client ID, Client secret (สำหรับ traditional web apps เท่านั้น) และ 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 และเข้าถึง UserInfo endpoint) scopeopenidเป็นตัวเลือกหากคุณต้องการเพียงการเข้าถึงทรัพยากร OAuth
บริการจะจัดการ 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 และ 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) เพื่อจัดการสิทธิ์ของผู้ใช้ บนหน้าขอความยินยอมจะแสดงเฉพาะขอบเขต (สิทธิ์) ที่ผู้ใช้ได้รับผ่านบทบาทของตนเท่านั้น หากแอปบุคคลที่สามร้องขอขอบเขตที่ผู้ใช้ไม่มี จะไม่แสดงเพื่อป้องกันการอนุญาตที่ไม่ได้รับอนุญาต
แนวทางการจัดการ:
- กำหนด บทบาทระดับโกลบอล หรือ บทบาทองค์กร พร้อมขอบเขตที่ต้องการ
- กำหนดบทบาทให้ผู้ใช้ตามความต้องการในการเข้าถึง
- ผู้ใช้จะได้รับขอบเขตจากบทบาทโดยอัตโนมัติ
แหล่งข้อมูลที่เกี่ยวข้อง
กรณีศึกษา: ผสานรวม Apache Answer เพื่อสร้างชุมชนสำหรับผู้ใช้ของคุณ
การใช้ Logto เป็นผู้ให้บริการข้อมูลระบุตัวตน (IdP) สำหรับบุคคลที่สาม