โดเมนแบบกำหนดเอง (Custom domains)
การเปลี่ยนโดเมนหลังจากเผยแพร่บริการของคุณอาจทำให้เกิดปัญหาได้ เนื่องจากโค้ดแอปพลิเคชันและการเชื่อมต่อของคุณอาจยังอ้างอิงโดเมนเดิมอยู่ เพื่อให้การเปลี่ยนผ่านเป็นไปอย่างราบรื่น เราแนะนำให้ ตั้งค่าโดเมนแบบกำหนดเองตั้งแต่เริ่มต้น ในขั้นตอนการสร้าง Production tenant
Tenant ของ Logto ของคุณจะมาพร้อมกับโดเมนฟรีเริ่มต้น {{tenant-id}}.app.logto อย่างไรก็ตาม คุณสามารถยกระดับประสบการณ์ผู้ใช้และการจดจำแบรนด์ของคุณได้ด้วยการใช้โดเมนแบบกำหนดเอง เช่น auth.example.com
โดเมนแบบกำหนดเองของคุณจะถูกใช้ในหลายฟังก์ชัน เช่น:
- URL สำหรับ หน้าลงชื่อเข้าใช้และลงทะเบียน
- Callback URI สำหรับ ตัวเชื่อมต่อโซเชียล หรือ ตัวเชื่อมต่อ enterprise SSO
- URL ที่เกี่ยวข้องกับ Passkey และ การลงชื่อเข้าใช้ด้วย passkey (การเปลี่ยนโดเมนหลังจากที่ผู้ใช้เชื่อมโยง Passkey แล้ว อาจทำให้ไม่สามารถใช้งาน MFA และการลงชื่อเข้าใช้ด้วยข้อมูลรับรองนั้นได้)
- SDK endpoint สำหรับการเชื่อมต่อ Logto กับแอปพลิเคชันของคุณ
หลายโดเมนแบบกำหนดเอง
ขณะนี้ Logto รองรับการตั้งค่า หลายโดเมนแบบกำหนดเอง สำหรับ tenant เดียว ทำให้หน้าลงชื่อเข้าใช้ของคุณเข้าถึงได้จากหลายโดเมนแบรนด์
ข้อจำกัดตามแผนการใช้งาน:
- Development tenant: เพิ่มโดเมนแบบกำหนดเองได้สูงสุด 2 โดเมนฟรี (สำหรับทดสอบ)
- Free plan: เพิ่มโดเมนแบบกำหนดเองได้ 1 โดเมนโดยไม่เสียค่าใช้จ่าย
- Pro plan: รวม 1 โดเมนแบบกำหนดเอง และสามารถเพิ่มได้สูงสุด 10 โดเมนผ่าน add-ons
- Enterprise plan: หากต้องการมากกว่า 10 โดเมนแบบกำหนดเองหรือมีความต้องการพิเศษ กรุณา ติดต่อเรา
ดู ตารางราคา Logto สำหรับข้อมูลรายละเอียด
ด้วยหลายโดเมนแบบกำหนดเอง คุณสามารถ:
- ใช้โดเมนต่างกันสำหรับภูมิภาค, ภาษา, แอปพลิเคชัน, องค์กร หรือโดเมนระดับบนสุดที่แตกต่างกัน
- สร้างความน่าเชื่อถือด้วยประสบการณ์แบรนด์ที่สอดคล้องกันก่อนและหลังลงชื่อเข้าใช้
- มอบประสบการณ์การยืนยันตัวตน (Authentication) ที่เฉพาะภูมิภาคหรือแบรนด์ผ่าน Custom UI
ตั้งค่าโดเมนแบบกำหนดเองใน Console
เพื่อเพิ่มโดเมนแบบกำหนดเองใหม่ใน Logto Console ให้ทำตามขั้นตอนดังนี้:
-
ในส่วน "Add a custom domain" ให้กรอก subdomain ของคุณ (เช่น
auth.example.com,auth.us.example.com) แล้วคลิก "add domain"
-
คัดลอกค่า CNAME
domains.logto.appในตาราง แล้วไปที่ผู้ให้บริการ DNS ของโดเมนคุณเพื่อเพิ่ม record
-
รอการตรวจสอบและกระบวนการ SSL
- เราจะตรวจสอบ record ของคุณอัตโนมัติทุก 10 วินาทีจนกว่าโดเมนแบบกำหนดเองจะถูกเพิ่ม ตรวจสอบให้แน่ใจว่าชื่อโดเมนหรือ DNS Records ที่กรอกถูกต้อง
- การตรวจสอบโดยทั่วไปใช้เวลาไม่กี่นาที แต่ในบางกรณีอาจนานถึง 24 ชั่วโมง ขึ้นอยู่กับผู้ให้บริการ DNS คุณสามารถเปลี่ยนหน้าได้ระหว่างรอ
หากต้องการเพิ่มหลายโดเมนแบบกำหนดเอง ให้ทำซ้ำขั้นตอนข้างต้นสำหรับแต่ละโดเมนที่ต้องการตั้งค่า
การแก้ไขปัญหา
ปัญหาใบรับรอง SSL
หากคุณพบปัญหาใบรับรอง SSL ขณะตั้งค่าโดเมนแบบกำหนดเอง อาจเกี่ยวข้องกับ CAA records ในการตั้งค่า DNS ของคุณ CAA records จะระบุว่า Certificate Authority (CA) ใดได้รับอนุญาตให้ออกใบรับรองสำหรับโดเมนของคุณ หากคุณใช้ CAA records คุณต้องอนุญาตทั้ง "letsencrypt.org" และ "pki.goog" เพื่อให้ Logto ออกใบรับรอง SSL ได้
สำหรับการแก้ไขปัญหาและรายละเอียดเพิ่มเติมเกี่ยวกับ CAA records ดู เอกสาร Cloudflare เกี่ยวกับ CAA Records
ข้อผิดพลาด "The hostname is associated with a held zone"
หากคุณพบข้อความผิดพลาด "The hostname is associated with a held zone, please contact the owner to have the hold removed" ขณะเพิ่มโดเมนแบบกำหนดเอง หมายความว่าโดเมนนั้นอยู่ใน Cloudflare zone และถูกตั้งสถานะเป็น "Zone Hold" ดู เอกสาร Cloudflare สำหรับข้อมูลเพิ่มเติม
วิธีแก้ไขคือต้องปลดล็อก zone hold ดูวิธีการได้จากลิงก์ข้างต้น
การเชื่อมต่อหมดเวลา (Error code 522) สำหรับโดเมนที่โฮสต์บน Cloudflare
หากโดเมนของคุณโฮสต์บน Cloudflare ให้ปิด proxy ของ Cloudflare สำหรับ CNAME record
ข้อผิดพลาด "Redirect URI does not match" หลังตั้งค่าโดเมนแบบกำหนดเอง
หากคุณได้รับข้อผิดพลาด "redirect URI does not match" หลังจากเพิ่มโดเมนแบบกำหนดเอง คุณต้องอัปเดตการตั้งค่า SDK ของคุณให้ใช้โดเมนแบบกำหนดเองเป็น endpoint
เกี่ยวกับ "primary domain":
ใน Logto ไม่มีการตั้งค่า "primary domain" แยกต่างหาก หลังจากเพิ่มโดเมนแบบกำหนดเองแล้ว ทั้งโดเมนแบบกำหนดเองและโดเมนเริ่มต้น {tenant-id}.logto.app จะยังคงใช้งานได้ โดเมนที่คุณกำหนดในพารามิเตอร์ endpoint ของ SDK จะเป็นตัวกำหนดว่าจะใช้โดเมนใดใน flow การยืนยันตัวตน (Authentication)
วิธีแก้ไข:
อัปเดตพารามิเตอร์ endpoint ในการเริ่มต้น SDK ของคุณให้ใช้โดเมนแบบกำหนดเอง:
const client = new LogtoClient({
endpoint: 'https://auth.example.com', // ใช้โดเมนแบบกำหนดเองของคุณ
appId: 'your-app-id',
// ... ตัวเลือกอื่น ๆ
});
ตรวจสอบด้วยว่า redirect URI ที่ลงทะเบียนใน Console → Applications ตรงกับโดเมนที่คุณใช้งาน
หมายเหตุ: Logto จะจัดเตรียมและจัดการใบรับรอง SSL สำหรับโดเมนแบบกำหนดเองของคุณโดยอัตโนมัติ คุณไม่จำเป็นต้องตั้งค่าใบรับรองเอง
การใช้งานโดเมนแบบกำหนดเอง
เมื่อคุณตั้งค่าเสร็จแล้ว ทั้งชื่อโดเมนแบบกำหนดเองและชื่อโดเมนเริ่มต้นของ Logto จะพร้อมใช้งานสำหรับ tenant ของคุณ อย่างไรก็ตาม จำเป็นต้องมีการตั้งค่าบางอย่างเพื่อเปิดใช้งานโดเมนแบบกำหนดเอง
ในบทความนี้ สมมติว่าโดเมนแบบกำหนดเองของคุณคือ auth.example.com
การอัปเดต SDK endpoint สำหรับแอปพลิเคชัน
แก้ไขโค้ดเริ่มต้นของ Logto SDK โดยเปลี่ยนชื่อโดเมนของ endpoint
const client = new LogtoClient({
...,// ตัวเลือกอื่น ๆ
endpoint: 'https://auth.example.com',
});
ในหน้ารายละเอียดของแอปพลิเคชันใน Console > Applications เลื่อนลงไปที่ส่วน "Endpoints & Credentials" เปลี่ยนโดเมนใน dropdown เพื่อดูและคัดลอก endpoint ที่เกี่ยวข้องสำหรับอัปเดตการตั้งค่าแอปของคุณ
การแก้ไข auth endpoints สำหรับแอปพลิเคชันอื่น ๆ
หากคุณมีแอปพลิเคชันที่ไม่ได้ใช้ Logto SDK จำเป็นต้องอัปเดต auth endpoints ของแอปเหล่านั้น
คุณสามารถค้นหา auth endpoints ได้ที่ URL มาตรฐานนี้:
https://auth.example.com/oidc/.well-known/openid-configuration
การอัปเดต redirect URI ของตัวเชื่อมต่อโซเชียล
ตัวเชื่อมต่อโซเชียล ใช้โปรโตคอล OIDC / OAuth เมื่อผู้ใช้ลงชื่อเข้าใช้ผ่านโดเมนแบบกำหนดเอง redirect URI จะใช้โดเมนนั้นโดยอัตโนมัติ คุณต้องอัปเดต redirect URI ใน developer console ของผู้ให้บริการโซเชียลของคุณ
ขั้นตอน:
- ไปที่ Console > Connectors > Social Connectors แล้วเลือกตัวเชื่อมต่อของคุณ
- คัดลอก redirect URI ที่แสดงในรายละเอียดตัวเชื่อมต่อ Logto จะแสดง redirect URI ทั้งหมดที่มีสำหรับโดเมนแบบกำหนดเองที่คุณตั้งค่าไว้
- เพิ่ม redirect URI นี้ใน developer console ของผู้ให้บริการโซเชียลของคุณ (เช่น Google, GitHub, Facebook)
สำหรับหลายโดเมนแบบกำหนดเอง:
- เพิ่ม redirect URI ทั้งหมดสำหรับแต่ละโดเมนแบบกำหนดเองที่คุณตั้งค่าไว้ เพื่อให้การเข้าสู่ระบบโซเชียลทำงานได้ไม่ว่าผู้ใช้จะเข้าผ่านโดเมนใด
- โดเมนเริ่มต้นของ Logto (
*.logto.app) ยังคงใช้งานได้ รวมไว้ด้วยหากคุณต้องการรองรับการเข้าสู่ระบบผ่านโดเมนเริ่มต้นด้วย - สำหรับ GitHub connector ให้ใช้ GitHub Apps แทน OAuth apps ที่ตั้งค่าใน GitHub dashboard เพราะ GitHub Apps รองรับหลาย redirect URI ในขณะที่ OAuth apps รองรับได้เพียง URI เดียว
การอัปเดต redirect URI ของตัวเชื่อมต่อ enterprise SSO ที่ใช้ OIDC
ตัวเชื่อมต่อ enterprise ที่ใช้ OIDC ใช้รูปแบบเดียวกับตัวเชื่อมต่อโซเชียล
ขั้นตอน:
- ไปที่ Console > Enterprise SSO แล้วเลือก OIDC connector ของคุณ
- คัดลอก redirect URI จากรายละเอียดตัวเชื่อมต่อ Logto จะแสดง redirect URI ทั้งหมดที่มีสำหรับโดเมนแบบกำหนดเองที่คุณตั้งค่าไว้
- อัปเดต redirect URI ในการตั้งค่าผู้ให้บริการข้อมูลระบุตัวตน (IdP) ของคุณ
สำหรับหลายโดเมนแบบกำหนดเอง: เพิ่ม redirect URI ที่เกี่ยวข้องทั้งหมดใน IdP ของคุณ เพื่อให้ enterprise SSO ทำงานได้ในทุกโดเมน
การอัปเดต SAML-based enterprise SSO connector ACS URLs
ตัวเชื่อมต่อ enterprise ที่ใช้ SAML จะใช้ Assertion Consumer Service (ACS) URL แทน redirect URI
ขั้นตอน:
- ไปที่ Console > Enterprise SSO แล้วเลือก SAML connector ของคุณ
- ในส่วน "Configure in the IdP" ใช้ dropdown ของโดเมนเพื่อสลับระหว่างโดเมนแบบกำหนดเองของคุณ
- คัดลอก ACS URL สำหรับโดเมนที่คุณต้องการรองรับ
- เพิ่ม ACS URL เหล่านี้ในการตั้งค่าผู้ให้บริการ SAML ของคุณ
สำคัญ: โดเมนที่คุณเลือกจะเป็นตัวกำหนดว่าผู้ใช้จะถูกเปลี่ยนเส้นทางไปที่ใดหลังจากการยืนยันตัวตน SSO ตั้งค่านี้ตามโดเมนที่แอปของคุณคาดว่าจะได้รับ SAML response
Passkey สำหรับ MFA และการลงชื่อเข้าใช้
Passkey สำหรับการยืนยันตัวตนหลายปัจจัย (MFA) และ การลงชื่อเข้าใช้ด้วย passkey จะผูกกับโดเมนที่ลงทะเบียนไว้ ผู้ใช้ต้องลงชื่อเข้าใช้ผ่านโดเมนเดียวกันเพื่อใช้ passkey ของตน
ข้อจำกัดปัจจุบัน: Logto ยังไม่รองรับการตรวจสอบ passkey ข้ามโดเมน หากผู้ใช้ลงทะเบียน passkey ที่ auth.us.example.com จะต้องลงชื่อเข้าใช้ผ่าน auth.us.example.com เท่านั้นเพื่อใช้ passkey นั้นสำหรับการยืนยัน MFA หรือการลงชื่อเข้าใช้ด้วย passkey Passkey ที่ลงทะเบียนในโดเมนหนึ่งจะไม่สามารถใช้กับโดเมนแบบกำหนดเองอื่นได้