การตั้งค่าบัญชีผู้ใช้ผ่าน Management API
การเชื่อมต่อระบบ
Logto มี Management API หลายรายการสำหรับจัดการบัญชีผู้ใช้ คุณสามารถใช้ API เหล่านี้เพื่อสร้างหน้าตั้งค่าบัญชีแบบบริการตนเองสำหรับผู้ใช้ปลายทาง
สถาปัตยกรรม
- ผู้ใช้: ผู้ใช้ปลายทางที่ได้รับการยืนยันตัวตนแล้วซึ่งต้องการเข้าถึงและจัดการการตั้งค่าบัญชีของตน
- แอปพลิเคชันฝั่งไคลเอนต์: แอปพลิเคชันฝั่งไคลเอนต์ของคุณที่ให้บริการหน้าตั้งค่าบัญชีแก่ผู้ใช้
- แอปพลิเคชันฝั่งเซิร์ฟเวอร์: แอปพลิเคชันฝั่งเซิร์ฟเวอร์ที่ให้บริการ API ตั้งค่าบัญชีแก่ไคลเอนต์ และเชื่อมต่อกับ Logto Management API
- Logto: Logto ในฐานะบริการการยืนยันตัวตน (Authentication) และการอนุญาต (Authorization) ให้บริการ Management API สำหรับจัดการบัญชีผู้ใช้
ลำดับขั้นตอน
- ผู้ใช้เข้าถึงแอปพลิเคชันฝั่งไคลเอนต์
- แอปไคลเอนต์ส่งคำขอการยืนยันตัวตน (Authentication request) ไปยัง Logto และเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าลงชื่อเข้าใช้ของ Logto
- ผู้ใช้ลงชื่อเข้าใช้ Logto
- ผู้ใช้ที่ได้รับการยืนยันตัวตนแล้วจะถูกเปลี่ยนเส้นทางกลับไปยังแอปไคลเอนต์พร้อมโค้ดการอนุญาต (authorization code)
- แอปไคลเอนต์ขอโทเค็นการเข้าถึง (Access token) จาก Logto สำหรับเข้าถึง API ตั้งค่าบัญชีแบบโฮสต์เอง
- Logto ออกโทเค็นการเข้าถึงให้แอปไคลเอนต์
- แอปไคลเอนต์ส่งคำขอตั้งค่าบัญชีไปยังแอปเซิร์ฟเวอร์พร้อมโทเค็นการเข้าถึงของผู้ใช้
- แอปเซิร์ฟเวอร์ตรวจสอบตัวตนและสิทธิ์ของผู้ร้องขอจากโทเค็นการเข้าถึงของผู้ใช้ จากนั้นขอโทเค็นการเข้าถึง Management API จาก Logto
- Logto ออกโทเค็นการเข้าถึง Management API ให้แอปเซิร์ฟเวอร์
- แอปเซิร์ฟเวอร์ขอข้อมูลผู้ใช้จาก Logto โดยใช้โทเค็นการเข้าถึง Management API
- Logto ตรวจสอบตัวตนของเซิร์ฟเวอร์และสิทธิ์ Management API แล้วส่งข้อมูลผู้ใช้กลับ
- แอปเซิร์ฟเวอร์ประมวลผลข้อมูลผู้ใช้ตามสิทธิ์ของผู้ร้องขอและส่งรายละเอียดบัญชีผู้ใช้กลับไปยังแอปไคลเอนต์
การเชื่อมต่อ Management API กับแอปฝั่งเซิร์ฟเวอร์
ดูหัวข้อ Management API เพื่อเรียนรู้วิธีเชื่อมต่อ Management API กับแอปพลิเคชันฝั่งเซิร์ฟเวอร์
User Management APIs
โครงสร้างข้อมูลผู้ใช้
ดูหัวข้อ ข้อมูลผู้ใช้และข้อมูลกำหนดเอง เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับโครงสร้างข้อมูลผู้ใช้ใน Logto
Management API สำหรับโปรไฟล์และตัวระบุผู้ใช้
โปรไฟล์และตัวระบุของผู้ใช้เป็นสิ่งสำคัญสำหรับการจัดการผู้ใช้ คุณสามารถใช้ API ต่อไปนี้เพื่อจัดการโปรไฟล์และตัวระบุของผู้ใช้
| method | path | description |
|---|---|---|
| GET | /api/users/{userId} | รับรายละเอียดผู้ใช้ตาม user ID |
| PATCH | /api/users/{userId} | อัปเดตรายละเอียดผู้ใช้ |
| PATCH | /api/users/{userId}/profile | อัปเดตฟิลด์โปรไฟล์ผู้ใช้ตาม user ID |
| GET | /api/users/{userId}/custom-data | รับข้อมูลกำหนดเองของผู้ใช้ตาม user ID |
| PATCH | /api/users/{userId}/custom-data | อัปเดตข้อมูลกำหนดเองของผู้ใช้ตาม user ID |
| PATCH | /api/users/{userId}/is-suspended | อัปเดตสถานะระงับบัญชีผู้ใช้ตาม user ID |
การยืนยันอีเมลและหมายเลขโทรศัพท์
ในระบบ Logto ทั้งอีเมลและหมายเลขโทรศัพท์สามารถใช้เป็นตัวระบุผู้ใช้ได้ ดังนั้นการยืนยันจึงเป็นสิ่งสำคัญ เพื่อรองรับสิ่งนี้ เรามี API สำหรับรหัสยืนยันเพื่อช่วยยืนยันอีเมลหรือหมายเลขโทรศัพท์ที่ให้มา
โปรดตรวจสอบให้แน่ใจว่ายืนยันอีเมลหรือหมายเลขโทรศัพท์ก่อนอัปเดตโปรไฟล์ผู้ใช้ด้วยอีเมลหรือหมายเลขโทรศัพท์ใหม่
| method | path | description |
|---|---|---|
| POST | /api/verifications/verification-code | ส่งรหัสยืนยันอีเมลหรือหมายเลขโทรศัพท์ |
| POST | /api/verifications/verification-code/verify | ยืนยันอีเมลหรือหมายเลขโทรศัพท์ด้วยรหัสยืนยัน |
การจัดการรหัสผ่านผู้ใช้
| method | path | description |
|---|---|---|
| POST | /api/users/{userId}/password/verify | ตรวจสอบรหัสผ่านปัจจุบันของผู้ใช้ตาม user ID |
| PATCH | /api/users/{userId}/password | อัปเดตรหัสผ่านผู้ใช้ตาม user ID |
| GET | /api/users/{userId}/has-password | ตรวจสอบว่าผู้ใช้มีรหัสผ่านหรือไม่ตาม user ID |
โปรดตรวจสอบรหัสผ่านปัจจุบันของผู้ใช้ก่อนอัปเดตรหัสผ่านใหม่
การจัดการโซเชียลไอดีของผู้ใช้
| method | path | description |
|---|---|---|
| GET | /api/users/{userId} | รับรายละเอียดผู้ใช้ตาม user ID โซเชียลไอดีจะอยู่ในฟิลด์ identities |
| POST | /api/users/{userId}/identities | เชื่อมต่อโซเชียลไอดีที่ได้รับการยืนยันกับผู้ใช้ตาม user ID |
| DELETE | /api/users/{userId}/identities | ยกเลิกการเชื่อมต่อโซเชียลไอดีออกจากผู้ใช้ตาม user ID |
| PUT | /api/users/{userId}/identities | อัปเดตโซเชียลไอดีที่เชื่อมต่อกับผู้ใช้โดยตรงตาม user ID |
| POST | /api/connectors/{connectorId}/authorization-uri | รับ authorization URI สำหรับผู้ให้บริการโซเชียลไอดี ใช้ URI นี้เพื่อเริ่มการเชื่อมต่อโซเชียลไอดีใหม่ |
- ผู้ใช้เข้าถึงแอปไคลเอนต์และขอเชื่อมต่อโซเชียลไอดี
- แอปไคลเอนต์ส่งคำขอไปยังเซิร์ฟเวอร์เพื่อเชื่อมต่อโซเชียลไอดี
- เซิร์ฟเวอร์ส่งคำขอไปยัง Logto เพื่อขอ authorization URI สำหรับผู้ให้บริการโซเชียลไอดี คุณต้องระบุ
stateparameter และredirect_uriของคุณเองในคำขอ และต้องลงทะเบียนredirect_uriกับผู้ให้บริการโซเชียลไอดีล่วงหน้า - Logto ส่งคืน authorization URI ให้เซิร์ฟเวอร์
- เซิร์ฟเวอร์ส่ง authorization URI กลับไปยังแอปไคลเอนต์
- แอปไคลเอนต์เปลี่ยนเส้นทางผู้ใช้ไปยัง authorization URI ของ IdP
- ผู้ใช้ลงชื่อเข้าใช้ IdP
- IdP เปลี่ยนเส้นทางผู้ใช้กลับไปยังแอปไคลเอนต์โดยใช้
redirect_uriพร้อม authorization code - แอปไคลเอนต์ตรวจสอบ
stateและส่งต่อการตอบกลับจาก IdP ไปยังเซิร์ฟเวอร์ - เซิร์ฟเวอร์ส่งคำขอไปยัง Logto เพื่อเชื่อมต่อโซเชียลไอดีกับผู้ใช้
- Logto รับข้อมูลผู้ใช้จาก IdP โดยใช้ authorization code
- IdP ส่งข้อมูลผู้ใช้กลับไปยัง Logto และ Logto เชื่อมต่อโซเชียลไอดีกับผู้ใช้
มีข้อจำกัดบางประการที่ควรพิจารณาเมื่อเชื่อมต่อโซเชียลไอดีใหม่กับผู้ใช้:
- Management API ไม่มี session context ใด ๆ ตัวเชื่อมต่อโซเชียลที่ต้องการ session ที่ใช้งานอยู่เพื่อรักษาสถานะการยืนยันตัวตนโซเชียลอย่างปลอดภัยจะไม่สามารถเชื่อมต่อผ่าน Management API ได้ ตัวเชื่อมต่อที่ไม่รองรับได้แก่ apple, OIDC มาตรฐาน และ OAuth 2.0 มาตรฐาน
- ด้วยเหตุผลเดียวกัน Logto ไม่สามารถตรวจสอบ
stateparameter ในการตอบกลับการอนุญาตได้ โปรดเก็บstateparameter ในแอปไคลเอนต์ของคุณและตรวจสอบเมื่อได้รับการตอบกลับการอนุญาต - คุณต้องลงทะเบียน
redirect_uriกับผู้ให้บริการโซเชียลไอดีล่วงหน้า มิฉะนั้น IdP จะไม่เปลี่ยนเส้นทางผู้ใช้กลับไปยังแอปไคลเอนต์ของคุณ IdP ของคุณต้องรองรับ callbackredirect_uriมากกว่าหนึ่งรายการ ได้แก่ สำหรับการลงชื่อเข้าใช้ และสำหรับหน้าผูกโปรไฟล์ของคุณเอง
การจัดการไอดีองค์กรของผู้ใช้
| method | path | description |
|---|---|---|
| GET | /api/users/{userId}?includeSsoIdentities=true | รับรายละเอียดผู้ใช้ตาม user ID ไอดีองค์กรจะอยู่ในฟิลด์ ssoIdentities เพิ่ม query parameter includeSsoIdentities=true ใน API รายละเอียดผู้ใช้เพื่อแสดงข้อมูลนี้ |
ขณะนี้ Management API ยังไม่รองรับการเชื่อมหรือยกเลิกการเชื่อมไอดีองค์กรกับผู้ใช้ คุณสามารถแสดงเฉพาะไอดีองค์กรที่เชื่อมกับผู้ใช้เท่านั้น
Personal access token
| method | path | description |
|---|---|---|
| GET | /api/users/{userId}/personal-access-tokens | รับ personal access token ทั้งหมดของผู้ใช้ |
| POST | /api/users/{userId}/personal-access-tokens | เพิ่ม personal access token ใหม่ให้ผู้ใช้ |
| DELETE | /api/users/{userId}/personal-access-tokens/{name} | ลบโทเค็นของผู้ใช้ตามชื่อ |
| PATCH | /api/users/{userId\s}/personal-access-tokens/{name} | อัปเดตโทเค็นของผู้ใช้ตามชื่อ |
Personal access token เป็นวิธีที่ปลอดภัยสำหรับผู้ใช้ในการให้ โทเค็นการเข้าถึง (Access token) โดยไม่ต้องใช้ข้อมูลรับรองหรือการลงชื่อเข้าใช้แบบโต้ตอบ ดูเพิ่มเติมเกี่ยวกับ การใช้ personal access token
การจัดการการตั้งค่า MFA ของผู้ใช้
| method | path | description |
|---|---|---|
| GET | /api/users/{userId}/mfa-verifications | รับการตั้งค่า MFA ของผู้ใช้ตาม user ID |
| POST | /api/users/{userId}/mfa-verifications | ตั้งค่า MFA ให้ผู้ใช้ตาม user ID |
| DELETE | /api/users/{userId}/mfa-verifications/{verificationId} | ลบการยืนยัน MFA ของผู้ใช้ตาม ID |
การลบบัญชีผู้ใช้
| method | path | description |
|---|---|---|
| DELETE | /api/users/{userId} | ลบบัญชีผู้ใช้ตาม user ID |
การจัดการเซสชันของผู้ใช้
| method | path | description |
|---|---|---|
| GET | /api/users/{userId}/sessions | รับเซสชันของผู้ใช้ตาม user ID |
| GET | /api/users/{userId}/sessions/{sessionId} | รับเซสชันของผู้ใช้ตาม session ID |
| DELETE | /api/users/{userId}/sessions/{sessionId} | ลบเซสชันของผู้ใช้ตาม session ID |