ตั้งค่า Single Sign-On (SSO) ด้วย SAML
ด้วยการตั้งค่าที่น้อยที่สุด ตัวเชื่อมต่อ (Connector) นี้ช่วยให้คุณเชื่อมต่อกับผู้ให้บริการข้อมูลระบุตัวตน (IdP) ที่ใช้ SAML ได้ทุกเจ้า
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ SSO และวิธีตั้งค่า SSO ใน Logto โปรดดูเอกสาร SSO สำหรับองค์กร (SAML & OIDC) เพื่อเริ่มต้นใช้งาน
ขั้นตอนที่ 1: สร้างแอปพลิเคชัน SAML SSO บน IdP ของคุณ
เริ่มต้นการผสานรวม SAML Single Sign-On (SSO) โดยการสร้างแอปพลิเคชันในฝั่งผู้ให้บริการข้อมูลระบุตัวตน (IdP). รับค่าการตั้งค่าต่อไปนี้จาก Logto ซึ่งแสดงถึง Service Provider (SP) ของคุณ:
- Audience URI (SP Entity ID): ใช้เป็นตัวระบุที่ไม่ซ้ำกันทั่วโลกสำหรับบริการ Logto ของคุณ ทำหน้าที่เป็น EntityId สำหรับ SP ในระหว่างคำขอการยืนยันตัวตน (Authentication request) ไปยัง IdP. ตัวระบุตัวนี้มีความสำคัญต่อการแลกเปลี่ยนข้อมูล SAML assertion และข้อมูลที่เกี่ยวข้องกับการยืนยันตัวตนอื่น ๆ อย่างปลอดภัยระหว่าง IdP กับ Logto
- ACS URL: Assertion Consumer Service (ACS) URL คือที่อยู่ที่ SAML assertion จะถูกส่งมาด้วยคำขอแบบ POST. URL นี้ใช้โดย IdP เพื่อส่ง SAML assertion มายัง Logto โดยทำหน้าที่เป็น callback URL ที่ Logto คาดว่าจะได้รับและประมวลผล SAML response ที่มีข้อมูลอัตลักษณ์ของผู้ใช้
กรอกค่า Audience URI และ ACS URL ในแอป SAML ของ IdP ของคุณ และดำเนินการต่อเพื่อดึงค่าการตั้งค่าต่อไปนี้จาก IdP ของคุณ
ขั้นตอนที่ 2: ตั้งค่า SAML SSO บน Logto
เพื่อให้การเชื่อมต่อ SAML SSO ทำงานได้ คุณจะต้องให้ข้อมูลเมทาดาทาของผู้ให้บริการข้อมูลระบุตัวตน (IdP) กับ Logto เมทาดาทา IdP คือเอกสาร XML ที่มีข้อมูลทั้งหมดที่จำเป็นสำหรับ Logto ในการสร้างความเชื่อถือกับ IdP
ไปที่แท็บ Connection Logto มี 3 วิธีในการกำหนดค่าเมทาดาทา IdP ดังนี้:
- Metadata URL: ระบุ URL ของเอกสาร IdP metadata XML Logto จะดึงข้อมูลเมทาดาทาจาก URL และกำหนดค่า SAML SSO ให้อัตโนมัติ
- Upload Metadata: อัปโหลดเอกสาร IdP metadata XML Logto จะวิเคราะห์เอกสาร XML และกำหนดค่า SAML SSO ให้อัตโนมัติ
- Manual Configuration: กำหนดค่าเมทาดาทา IdP ด้วยตนเอง
- IdP entity ID: Entity ID ของ IdP
- Single sign-on URL: URL ของบริการ Single Sign-On ของ IdP
- Signing certificate: ใบรับรอง x509 ใช้สำหรับตรวจสอบลายเซ็นของ SAML response ที่มาจาก IdP
ไม่ว่าคุณจะเลือกวิธีใด Logto จะวิเคราะห์เมทาดาทา IdP และกำหนดค่า SAML SSO ให้สอดคล้องกัน
ขั้นตอนที่ 3: กำหนดการแมปแอตทริบิวต์ของผู้ใช้
แอตทริบิวต์ของผู้ใช้ที่ส่งกลับมาจาก IdP อาจแตกต่างกันไปขึ้นอยู่กับการตั้งค่าของ IdP Logto มีวิธีที่ยืดหยุ่นในการแมปแอตทริบิวต์ของผู้ใช้ที่ได้รับจาก IdP ไปยังแอตทริบิวต์ของผู้ใช้ใน Logto คุณสามารถกำหนดค่าการแมปแอตทริบิวต์ของผู้ใช้ได้ในแท็บประสบการณ์การผสานรวม SAML SSO
- id: ตัวระบุเฉพาะของผู้ใช้ Logto จะอ่านการอ้างสิทธิ์ (claim)
nameIdจาก SAML response เป็นรหัส SSO identity ของผู้ใช้ - email: ที่อยู่อีเมลของผู้ใช้
- name: ชื่อของผู้ใช้
ขั้นตอนที่ 4: กำหนดโดเมนอีเมลและเปิดใช้งานตัวเชื่อมต่อ SSO
ระบุ email domains ขององค์กรของคุณในแท็บ SSO experience ของตัวเชื่อมต่อ Logto การดำเนินการนี้จะเปิดใช้งานตัวเชื่อมต่อ SSO ให้เป็นวิธีการยืนยันตัวตนสำหรับผู้ใช้เหล่านั้น
ผู้ใช้ที่มีอีเมลในโดเมนที่ระบุจะถูกเปลี่ยนเส้นทางให้ใช้ตัวเชื่อมต่อ SAML SSO เป็นวิธีการยืนยันตัวตนเพียงวิธีเดียว
ตัวเลือกเพิ่มเติม: ลงนามคำขอการยืนยันตัวตน SAML
โดยปกติแล้ว Logto จะส่งคำขอการยืนยันตัวตน SAML (AuthnRequests) แบบไม่เซ็นชื่อ หาก IdP ของคุณต้องการให้คำขอการยืนยันตัวตนถูกเซ็นชื่อ Logto สามารถเซ็นชื่อคำขอเหล่านั้นด้วยใบรับรอง Service Provider (SP) ที่สร้างขึ้น การเซ็นชื่อถูกควบคุมโดยการตั้งค่า Sign authentication request ของตัวเชื่อมต่อ (Connector) เท่านั้น — Logto จะไม่อ่านแฟล็ก WantAuthnRequestsSigned จาก metadata ของ IdP
ตั้งค่าตามลำดับนี้เพื่อหลีกเลี่ยงการขัดจังหวะการลงชื่อเข้าใช้:
- ในแท็บ
Connectionของตัวเชื่อมต่อ ค้นหาส่วน Request signing certificate แล้วคลิก Generate new key กุญแจแรกจะถูกเปิดใช้งานโดยอัตโนมัติ; กุญแจที่สร้างภายหลังจะถูกจัดเตรียมไว้เป็นแบบ inactive สำหรับการหมุนเวียน - ดาวน์โหลดใบรับรองของกุญแจที่ใช้งานอยู่และลงทะเบียนกับ IdP ของคุณ
- เปิดใช้งาน Sign authentication request และบันทึก การเปิดใช้งานนี้ต้องมีกุญแจสำหรับเซ็นชื่อที่ใช้งานอยู่ — หากไม่มีจะไม่สามารถบันทึกได้
- หาก IdP ของคุณมีตัวเลือกแยกต่างหากเพื่อบังคับหรือยืนยันคำขอที่เซ็นชื่อ ให้เปิดใช้งานตอนนี้ แล้วทดสอบขั้นตอนการลงชื่อเข้าใช้
ให้ทั้งสองฝั่งดำเนินการให้สอดคล้องกัน การเปิดใช้งาน Sign authentication request ก่อนลงทะเบียนใบรับรอง — หรือบังคับให้ IdP ตรวจสอบก่อนที่ Logto จะเซ็นชื่อ — จะทำให้ไม่สามารถลงชื่อเข้าใช้ผ่านการเชื่อมต่อนี้ได้จนกว่าฝั่งตรงข้ามจะตั้งค่าตาม IdP ที่ไม่ตรวจสอบลายเซ็นคำขอจะเพิกเฉยต่อการเซ็นชื่อ
การจัดการกุญแจทำงานแยกจากสวิตช์เปิด / ปิด:
- จะมีได้เพียงกุญแจเดียวที่เป็น active และกุญแจที่ active จะเซ็นชื่อทุกคำขอ การดำเนินการกับกุญแจ (สร้าง, เปิดใช้งาน, ปิดใช้งาน, ลบ) มีผลทันที
- หากต้องการหมุนเวียนใบรับรองโดยไม่หยุดชะงัก: สร้างกุญแจใหม่ (จะถูกจัดเตรียมเป็น inactive), ลงทะเบียนใบรับรองกับ IdP ของคุณ, จากนั้นเปิดใช้งาน — กุญแจเดิมจะถูกปิดใช้งานโดยอัตโนมัติและสามารถลบได้ภายหลัง
- กุญแจที่ active ไม่สามารถลบได้ และไม่สามารถปิดใช้งานได้ขณะเปิด Sign authentication request — ต้องปิดการเซ็นชื่อก่อน
- การปิดสวิตช์จะเก็บกุญแจทั้งหมดไว้ ดังนั้นเมื่อเปิดใช้งานใหม่จะกลับมาเซ็นชื่อด้วยใบรับรองเดิม — ไม่ต้องปรับแต่งฝั่ง IdP ใหม่
Logto เซ็นชื่อคำขอด้วย RSA-SHA256 โดยค่าเริ่มต้น หากต้องการใช้ RSA-SHA512 ให้ตั้งค่า requestSignatureAlgorithm เป็น http://www.w3.org/2001/04/xmldsig-more#rsa-sha512 ใน config ของตัวเชื่อมต่อผ่าน Logto Management API