นำ UI ของคุณมาใช้
Logto อนุญาตให้คุณนำ UI ของคุณเองมาใช้แทนที่อินเทอร์เฟซประสบการณ์การลงชื่อเข้าใช้ที่มีอยู่โดยสมบูรณ์ นอกเหนือจากตัวเลือกการปรับแต่ง UI ที่สร้างไว้ล่วงหน้า ฟีเจอร์นี้ช่วยให้คุณอัปโหลดไฟล์ zip ที่มี asset UI ที่คุณปรับแต่งเอง (HTML, CSS, JavaScript, รูปภาพ ฯลฯ) ให้ Logto Cloud โฮสต์ไว้บนเซิร์ฟเวอร์ และใช้เป็น ประสบการณ์การลงชื่อเข้าใช้ สำหรับผู้ใช้ tenant ของคุณ
ฟีเจอร์นี้ต้องการให้ UI ของคุณรองรับ Single Page Application (SPA) และแนะนำให้ใช้ production build เสมอเพื่อประสิทธิภาพสูงสุด
สำรวจฟีเจอร์ Custom UI ใน Logto Console
เริ่มต้นด้วยโปรเจกต์ทางการ
วิธีที่เร็วที่สุดในการเริ่มต้น UI ลงชื่อเข้าใช้แบบ custom คือโคลน Logto experience project นี่คือ UI ประสบการณ์การลงชื่อเข้าใช้ของ Logto ที่ครอบคลุมทุกฟีเจอร์และแนวปฏิบัติที่ดีที่สุดของ Logto คุณสามารถปรับแต่งให้เหมาะกับความต้องการของคุณได้
หลังจากตรวจสอบโค้ดแล้ว เพียงรันคำสั่งต่อไปนี้เพื่อ build โปรเจกต์:
pnpm install && pnpm build
ทั้งโปรเจกต์ Logto เป็น pnpm monorepo หากคุณต้องการรันแพ็กเกจ experience แบบ standalone (โดยไม่ใช้ pnpm) ให้แทนที่ workspace: dependencies ใน package.json ด้วยหมายเลขเวอร์ชันที่ระบุ (เช่น ^1.0.0)
หลังจาก build เสร็จสิ้น คุณจะพบ asset ที่ compile แล้วทั้งหมดในไดเรกทอรี dist จากนั้นสร้าง ZIP archive ของไดเรกทอรี dist - archive นี้จะใช้สำหรับอัปโหลดไปยัง Logto Cloud ในขั้นตอนถัดไป
ข้อกำหนดของ asset UI แบบ custom
ก่อนอัปโหลด asset UI แบบ custom ของคุณ โปรดตรวจสอบให้แน่ใจว่าตรงตามข้อกำหนดต่อไปนี้:
- ไฟล์ที่อัปโหลดควรบรรจุเป็น zip ไฟล์เดียว
- zip ไฟล์ควรมีไฟล์
index.htmlอยู่ที่ root directory - zip ไฟล์ต้องมีขนาดไม่เกิน 20MB
- zip ไฟล์ต้องไม่มีไฟล์ใดที่มีขนาดเกิน 10MB
- zip ไฟล์ต้องมีจำนวนไฟล์รวมไม่เกิน 200 ไฟล์
อัปโหลด asset UI แบบ custom ของคุณ
โปรดใช้ความระมัดระวังเมื่อใช้ฟีเจอร์นี้ใน production เพราะจะมีผลกับประสบการณ์การลงชื่อเข้าใช้ของผู้ใช้ของคุณทันที
- ไปที่ Console > Sign-in & account > Branding > Bring your UI
- คลิกเพื่อเลือกหรือ drag & drop zip ไฟล์ที่คุณสร้างไว้ในขั้นตอนก่อนหน้า ระบบจะเริ่มอัปโหลดโดยอัตโนมัติ
- เมื่ออัปโหลดเสร็จแล้ว ให้บันทึกการเปลี่ยนแปลง UI แบบ custom ของคุณจะถูกใช้งานทันที
- หน้าต่าง "Sign-in preview" จะถูกปิดใช้งานเมื่อคุณใช้ UI ลงชื่อเข้าใช้แบบ custom อย่างไรก็ตาม คุณยังสามารถคลิกปุ่ม "Live preview" เพื่อทดสอบหน้าลงชื่อเข้าใช้แบบ custom ในแท็บเบราว์เซอร์ใหม่ได้
กำหนดค่า CSP แหล่งที่มาแบบ custom
Logto กำหนด Content Security Policy (CSP) header ให้กับหน้า UI แบบ custom หาก UI ของคุณโหลดสคริปต์จาก third-party หรือเชื่อมต่อกับบริการภายนอก ให้เพิ่ม origin แหล่งที่มาเพิ่มเติมใน Console > Sign-in & account > Branding > Bring your UI
คุณสามารถกำหนดค่าได้ดังนี้:
script-src: อนุญาตแหล่งที่มาของ JavaScript module หรือ script เช่น CAPTCHA, analytics, หรือ tag manager providerconnect-src: อนุญาต endpoint เครือข่ายที่ใช้โดยfetch, XMLHttpRequest, EventSource และ WebSocket
ตัวอย่าง:
{
"scriptSrc": ["https://scripts.example.com"],
"connectSrc": ["https://api.example.com", "wss://events.example.com"]
}
ควรใช้ origin แบบ HTTPS สำหรับทั้งสอง directive connect-src ยังรองรับ origin แบบ wss:// สำหรับ WebSocket ด้วย Logto จะเพิ่มแหล่งที่มานี้เข้าไปในนโยบายความปลอดภัยที่มีอยู่เฉพาะเมื่อ asset UI แบบ custom ของคุณถูกใช้งาน
กำหนดค่า Cross-Origin-Opener-Policy header
โดยปกติ Logto จะไม่ส่ง header Cross-Origin-Opener-Policy (COOP) ดังนั้นแอปที่เปิดหน้าลงชื่อเข้าใช้ใน popup จะยังสามารถสื่อสารกับมันผ่าน window.opener ได้ หากแอปของคุณไม่ได้ลงชื่อเข้าใช้ผ่าน popup คุณสามารถแยก UI ลงชื่อเข้าใช้แบบ custom ของคุณออกจากหน้าต่างเบราว์เซอร์อื่น เลือกนโยบายได้ที่ Cross-Origin-Opener-Policy ใน Console > Sign-in & account > Branding > Bring your UI:
| ตัวเลือก | Header ที่ส่ง | ผลลัพธ์ |
|---|---|---|
| ไม่ตั้งค่า (ไม่มี header) | None | ค่าเริ่มต้น ทุกการเชื่อมต่อแบบ popup จะยังทำงานได้ปกติ |
same-origin-allow-popups | Cross-Origin-Opener-Policy: same-origin-allow-popups | ตัดการเชื่อมต่อกับ window ที่เปิดหน้าลงชื่อเข้าใช้ popup ที่ UI ของคุณเปิดจะยังคงมี window.opener ขณะอยู่บนไซต์อื่น |
same-origin | Cross-Origin-Opener-Policy: same-origin | ตัดการเชื่อมต่อ popup ที่ UI ของคุณเปิดด้วย |
คุณยังสามารถตั้งค่า field crossOriginOpenerPolicy ผ่าน update sign-in experience Management API ได้ โดยรับค่า unsafe-none (ค่าเริ่มต้น, ไม่ส่ง header), same-origin-allow-popups และ same-origin
ก่อนเลือกนโยบาย โปรดตรวจสอบว่าแอปของคุณและ UI แบบ custom ใช้งาน popup อย่างไร:
- แอปที่เปิดหน้าลงชื่อเข้าใช้ใน popup และอาศัย
window.openerเช่น รับผลลัพธ์ผ่านpostMessageจะหยุดทำงานหากเลือกนโยบายใดนโยบายหนึ่ง ควรใช้ค่าเริ่มต้นหากยังมีแอปแบบนี้ หรือเปลี่ยนไปใช้ flow ลงชื่อเข้าแบบ redirect ก่อน - popup ที่ UI แบบ custom ของคุณเปิดจะสูญเสีย
window.openerเมื่อกลับมายัง UI ของคุณ เช่น callback หน้า social sign-in popup ที่ยังอยู่บนไซต์อื่นและส่งผลลัพธ์จากที่นั่น (เช่น popup ลงชื่อเข้าใช้ของ provider) จะยังทำงานกับsame-origin-allow-popupsแต่กับsame-originpopup จะสูญเสียwindow.openerทันทีที่เปิด
หากต้องการนโยบาย ให้เลือก same-origin-allow-popups แทน same-origin
Logto จะส่ง header นี้เฉพาะขณะให้บริการ asset UI แบบ custom เท่านั้น หน้าลงชื่อเข้าใช้ที่มีอยู่ /oidc/* และ Account Center (/account) จะไม่ส่ง COOP header ดังนั้นเครื่องมือสแกนความปลอดภัยอาจยังรายงานว่าขาด header นี้ในหน้าดังกล่าว
พัฒนา UI แบบ custom ของคุณ
โต้ตอบกับ Experience API
UI แบบ custom ของคุณต้องโต้ตอบกับ Experience API เพื่อดำเนินการต่าง ๆ เช่น ลงชื่อเข้าใช้ สมัครสมาชิก รีเซ็ตรหัสผ่าน ผูกบัญชีโซเชียล เปิดใช้งาน MFA และอื่น ๆ เพื่อเข้าใจ flow ของผู้ใช้และรายละเอียดการใช้งาน แนะนำให้ศึกษาจาก Experience API design RFC ซึ่งมีรายละเอียดทางเทคนิคและตัวอย่างอย่างครบถ้วน
คุณยังต้องเข้าถึงการตั้งค่าประสบการณ์การลงชื่อเข้าใช้อื่น ๆ เช่น สีแบรนด์ โลโก้บริษัท favicon นโยบายรหัสผ่าน ข้อความภาษาท้องถิ่น หรือ custom CSS ผ่าน sign-in Experience API endpoint
จัดการ CAPTCHA เมื่อเปิดใช้งาน
ประสบการณ์การลงชื่อเข้าใช้ของ Logto ที่มีอยู่จะจัดการ CAPTCHA ให้อัตโนมัติ หาก tenant ของคุณใช้ Bring your UI และเปิดใช้งาน CAPTCHA ป้องกันบอท UI แบบ custom ของคุณต้องทำการเชื่อมต่อ CAPTCHA ฝั่ง frontend ให้เสร็จก่อนเรียก PUT /api/experience
ส่ง provider token ที่ได้กลับไปเป็น captchaToken ใน request body ของ PUT /api/experience ดูคู่มือเฉพาะ provider สำหรับรายละเอียด:
โปรเจกต์ตัวอย่าง
เรามีชุดโปรเจกต์ตัวอย่างเพื่อช่วยให้คุณเข้าใจและเริ่มต้นสร้าง UI แบบ custom ได้อย่างรวดเร็ว โปรดดูที่ Logto Experience project ใน GitHub สำหรับรายละเอียด
นอกจากนี้ เรายังจะพัฒนาโปรเจกต์ตัวอย่างที่ง่ายขึ้นและเน้นตามสถานการณ์การใช้งานจริงเพื่อครอบคลุม use case ที่พบบ่อย โปรดติดตามอัปเดตในอนาคต!
การพัฒนาและดีบักแบบ local
สำหรับการพัฒนาและดีบักแบบ local เรามีเครื่องมือ Logto Tunnel CLI เพื่อ:
- proxy คำขอ Experience API จากเครื่องของคุณไปยัง Logto Cloud endpoint
- ทดสอบการทำงานของ UI แบบ custom ของคุณแบบ local
ช่วยให้คุณทดสอบและดีบัก UI แบบ custom ได้ก่อนอัปโหลดไปยัง Logto Cloud
โปรดดู ดีบักและทดสอบ UI แบบ custom ของคุณแบบ local สำหรับรายละเอียดเพิ่มเติม
อัปโหลด asset UI แบบ custom ด้วย CLI
นอกจากการอัปโหลดผ่าน Console แล้ว คุณยังสามารถใช้ Logto CLI เพื่ออัปโหลด asset UI แบบ custom ได้ด้วย วิธีนี้เหมาะสำหรับ workflow การ deploy แบบอัตโนมัติ
โปรดดู อัปโหลด asset UI แบบ custom ด้วย CLI สำหรับรายละเอียดเพิ่มเติม
กู้คืนประสบการณ์การลงชื่อเข้าใช้แบบ built-in ของ Logto
หากคุณต้องการกู้คืนประสบการณ์การลงชื่อเข้าใช้แบบ built-in ของ Logto เพียงคลิกปุ่มลบบนการ์ด Bring your UI หลังจากบันทึกการเปลี่ยนแปลง UI ลงชื่อเข้าใช้จะกลับไปเป็นค่าเริ่มต้นของ Logto
แหล่งข้อมูลที่เกี่ยวข้อง
RFCS: Experience API
Experience samples Bring your own sign-in UI to Logto Cloud