ข้ามไปยังเนื้อหา
บทความทั้งหมด

ความปลอดภัย

ตั้งค่า SAML Single Sign-On ให้ LMS ของคุณด้วย Entra ID, Okta หรือ Google Workspace

คู่มือปฏิบัติสำหรับ LMS SSO ด้วย SAML: ศัพท์สำคัญ ขั้นตอนตั้งค่ากับ Entra ID, Okta และ Google Workspace เช็กลิสต์ทดสอบ และข้อผิดพลาดที่ควรหลีกเลี่ยง

ทีม Acadenix · · อ่าน 3 นาที


ทุกการเข้าสู่ระบบที่แยกกันคือรหัสผ่านอีกชุดที่ต้องรีเซ็ต และบัญชีอีกบัญชีที่ต้องปิดเมื่อมีคนลาออก Single Sign-On (SSO) แบบ SAML เชื่อมระบบจัดการการเรียนรู้ (LMS) ของคุณกับผู้ให้บริการยืนยันตัวตน (identity provider) เพื่อให้ผู้คนเข้าสู่ระบบอบรมด้วยบัญชีที่ทำงานของตน และสิทธิ์เข้าถึงเป็นไปตามไดเรกทอรีของคุณ ต่อไปนี้คือวิธีการทำงานของ SAML ขั้นตอนการตั้งค่ากับ Microsoft Entra ID, Okta หรือ Google Workspace และสิ่งที่ควรตรวจสอบก่อนเปิดใช้งานจริง

SAML Single Sign-On ทำงานอย่างไร

SAML (Security Assertion Markup Language) 2.0 คือมาตรฐานเปิดสำหรับส่งข้อมูลการเข้าสู่ระบบระหว่างสองระบบที่ไว้วางใจกัน LMS ไม่เห็นรหัสผ่านของผู้ใช้เลย: แต่จะส่งผู้ใช้ไปยัง identity provider ของคุณ ซึ่งตรวจสอบว่าเป็นใคร รวมถึงการยืนยันตัวตนหลายปัจจัยที่คุณกำหนด แล้วส่งผู้ใช้กลับมาพร้อมข้อความยืนยันที่ลงนามแล้ว

คำศัพท์ ความหมาย
ผู้ให้บริการยืนยันตัวตน (Identity provider, IdP) ระบบที่ยืนยันตัวตนของบุคลากรของคุณ เช่น Entra ID, Okta หรือ Google Workspace
ผู้ให้บริการแอปพลิเคชัน (Service provider, SP) แอปพลิเคชันที่ผู้คนเข้าสู่ระบบ ในที่นี้คือ LMS ของคุณ
Assertion ข้อความ XML ที่ลงนามแล้วจาก IdP: ระบุว่าผู้ใช้เป็นใคร เข้าสู่ระบบเมื่อใด และแอตทริบิวต์ต่างๆ เช่น อีเมลและชื่อ
Entity ID ชื่อเฉพาะของแต่ละฝ่าย มักมีรูปแบบคล้าย URL แต่เป็นเพียงตัวระบุ ต้องตรงกันทุกตัวอักษร
ACS URL Assertion Consumer Service URL: ที่อยู่ของ LMS ที่รับการตอบกลับจาก IdP
ใบรับรองสำหรับลงนาม (Signing certificate) IdP ลงนามด้วยคีย์ส่วนตัว ส่วน LMS ตรวจสอบด้วยใบรับรองสาธารณะของ IdP และปฏิเสธ assertion ที่ปลอมหรือถูกแก้ไข
Metadata ไฟล์ XML ที่รวม entity ID, endpoint และใบรับรองไว้ พร้อมนำเข้า

Assertion มีอายุสั้นและระบุผู้รับ (entity ID ของ SP) โดย SP จะปฏิเสธสิ่งที่หมดอายุแล้วหรือมีไว้สำหรับแอปพลิเคชันอื่น

ทำไม SSO จึงคุ้มค่าสำหรับ LMS

  • ไม่มีรหัสผ่านเพิ่ม. ผู้ใช้ใช้บัญชีที่ใช้อยู่ทุกวัน และนโยบาย MFA กับนโยบายการเข้าถึงของคุณก็ครอบคลุมการอบรมด้วย
  • ผู้เข้าใหม่เข้าถึงได้เร็ว. กำหนดแอปพลิเคชัน LMS ให้กลุ่ม แล้วพนักงานใหม่ในกลุ่มนั้นเข้าสู่ระบบได้ตั้งแต่วันแรก
  • ผู้ที่ลาออกเสียสิทธิ์ที่ต้นทาง. ปิดการใช้งานบัญชีของใครในไดเรกทอรีของคุณ คนนั้นก็เริ่มเซสชัน LMS ใหม่ไม่ได้ SAML ควบคุมการเข้าสู่ระบบ ไม่ใช่ตัวบัญชี ดังนั้นควรเก็บถาวรบัญชี LMS เป็นส่วนหนึ่งของขั้นตอนเมื่อพนักงานลาออก (offboarding) ด้วย

การสร้างบัญชีแบบ just-in-time

ด้วยการสร้างบัญชีแบบ just-in-time (JIT) LMS จะสร้างบัญชีเมื่อมีคนเข้าสู่ระบบครั้งแรก จากแอตทริบิวต์ใน assertion จึงไม่ต้องนำเข้ารายชื่อผู้ใช้ ควรวางเงื่อนไขป้องกันไว้ดังนี้

  • จำกัดเฉพาะโดเมนอีเมลของคุณเอง เพื่อไม่ให้แอปพลิเคชันที่ตั้งค่าผิดหรือบัญชีผู้เยี่ยมชมสร้างผู้ใช้ที่ไม่เกี่ยวข้อง
  • ให้บัญชีใหม่มีบทบาทต่ำสุด และมอบสิทธิ์ผู้ดูแลระบบอย่างตั้งใจ
  • จับคู่ผู้ใช้ด้วยตัวระบุที่คงที่ หาก IdP ของคุณส่งได้ เพราะที่อยู่อีเมลเปลี่ยนได้

การเข้าสู่ระบบแบบ SP-initiated กับ IdP-initiated

  • SP-initiated: ผู้ใช้เปิด LMS ซึ่งส่งคำขอยืนยันตัวตนไปยัง IdP และ IdP ส่งการตอบกลับด้วย POST ไปยัง ACS URL ใช้ได้จากบุ๊กมาร์กและลิงก์ในอีเมล และโดยทั่วไปถือว่าเป็นขั้นตอนที่ปลอดภัยกว่า เพราะการตอบกลับเป็นคำตอบของคำขอที่ LMS สร้างขึ้น
  • IdP-initiated: ผู้ใช้คลิกไทล์ของแอปพลิเคชันใน Microsoft My Apps แดชบอร์ด Okta ของตน หรือเมนูแอปของ Google แล้ว IdP ส่งการตอบกลับที่ไม่มีใครร้องขอไปยัง ACS URL

คุณเปิดให้ใช้ได้ทั้งสองแบบ แต่ต้องทดสอบทั้งสองแบบ

การตั้งค่า SAML SSO ทีละขั้น

ลำดับขั้นตอนคล้ายกันในทุกที่

  1. วางแผนขอบเขต: ใครใช้ SSO กลุ่มใดได้รับแอปพลิเคชัน โดเมนอีเมลใดได้รับอนุญาต และแอตทริบิวต์ใดระบุตัวตนของแต่ละคน
  2. สร้างการเชื่อมต่อใน LMS และจด entity ID กับ ACS URL ไว้
  3. สร้างแอปพลิเคชัน SAML ที่ IdP ของคุณ ด้วยค่าเหล่านั้น เลือกรูปแบบ NameID และเพิ่มแอตทริบิวต์อีเมล ชื่อ และนามสกุล
  4. กำหนดผู้ใช้หรือกลุ่ม ผู้ที่ไม่ได้รับมอบหมายมักถูกปฏิเสธ
  5. ให้รายละเอียดของ IdP แก่ LMS: URL ของ metadata ไฟล์ metadata หรือ entity ID ของ IdP, URL สำหรับเข้าสู่ระบบ และใบรับรองสำหรับลงนาม
  6. แมปแอตทริบิวต์ กับชื่อที่ IdP ของคุณส่งมาจริง
  7. ทดสอบ แล้วจึงเปิดใช้งาน และแจ้งผู้ใช้ว่ากำลังเปลี่ยนอะไร

หมายเหตุเฉพาะผู้ให้บริการ

เอกสารของผู้ให้บริการแต่ละรายมีหน้าจอที่แน่นอน สิ่งที่ควรรู้มีดังนี้

  • Microsoft Entra ID: ใช้ enterprise application แบบ non-gallery ไม่ใช่ app registration ซึ่งไม่มีให้เลือก SAML ชื่อ claim เป็น URI ยาว จึงควรคัดลอกให้ตรงทุกตัวอักษร object ID เหมาะเป็นตัวระบุที่คงที่ สำหรับผู้ใช้ที่ไม่มีกล่องจดหมาย claim อีเมลอาจว่างเปล่า ใช้ user principal name แทนได้หากเป็นที่อยู่อีเมลจริง
  • Okta: สร้าง SAML 2.0 app integration คุณตั้งชื่อ attribute statement เอง จึงต้องตรงกับการแมปของ LMS ทุกตัวอักษร รวมถึงตัวพิมพ์ใหญ่เล็ก user ID ภายในของ Okta เป็นตัวระบุที่คงที่
  • Google Workspace: เพิ่มแอป SAML แบบกำหนดเอง แล้วดาวน์โหลดไฟล์ metadata ของแอป แอปเริ่มต้นในสถานะปิด จึงต้องเปิดให้หน่วยองค์กร (organisational unit) หรือกลุ่มที่ถูกต้อง การตั้งค่าโดยทั่วไประบุผู้ใช้ด้วยอีเมลหลัก ดังนั้นควรวางแผนรับมือกับที่อยู่ที่ถูกเปลี่ยนชื่อและถูกนำกลับมาใช้ซ้ำ

เช็กลิสต์การทดสอบ

ก่อนเปิดใช้งานจริง ให้ตรวจสอบสิ่งเหล่านี้ในหน้าต่างเบราว์เซอร์ส่วนตัว

  • ผู้ใช้เดิมเข้าสู่ระบบโดยเริ่มจาก LMS และเข้าอีกครั้งจากไทล์ของแอป
  • ผู้ใช้ใหม่ในโดเมนของคุณได้รับบัญชีพร้อมบทบาทที่ถูกต้อง
  • ผู้ที่ไม่ได้รับมอบหมายให้ใช้แอปพลิเคชันถูกปฏิเสธ
  • ผู้ที่อยู่นอกโดเมนที่อนุญาตของคุณถูกปฏิเสธ
  • อีเมล ชื่อ และนามสกุลมาถึงถูกต้อง
  • ผู้ดูแลระบบยังเข้าได้ผ่านเส้นทางกู้คืน

ข้อผิดพลาดที่พบบ่อย

นาฬิกาไม่ตรงกัน (Clock skew)

หากนาฬิกาของ IdP และ LMS ต่างกันเกินกว่าที่ LMS ยอมรับได้ assertion ที่ถูกต้องจะถูกปฏิเสธว่ายังไม่ถึงเวลาใช้งานหรือหมดอายุแล้ว ปัญหานี้ส่วนใหญ่กระทบเซิร์ฟเวอร์ยืนยันตัวตนที่โฮสต์เอง จึงควรซิงโครไนซ์นาฬิกาของเซิร์ฟเวอร์เหล่านั้น

การหมุนเวียนใบรับรอง (Certificate rollover)

ใบรับรองสำหรับลงนามของ IdP มีวันหมดอายุ และหาก LMS ไม่เชื่อถือใบรับรองใหม่ การเข้าสู่ระบบทุกครั้งจะล้มเหลวพร้อมกัน ให้จดวันหมดอายุลงปฏิทินไว้ หาก LMS ของคุณเชื่อถือใบรับรองได้สองใบ ให้เพิ่มใบใหม่ที่ LMS ก่อน แล้วจึงเปิดใช้งานที่ IdP มิฉะนั้นให้สลับทั้งสองฝั่งพร้อมกันในช่วงที่เงียบ แล้วทดสอบทันที

การแมปแอตทริบิวต์ (Attribute mapping)

ชื่อแอตทริบิวต์มักถูกจับคู่แบบตรงตัวทุกตัวอักษร: LMS ที่คาดหวัง email จะไม่ยอมรับ Email ตรวจสอบตัวระบุด้วย NameID แบบ transient เปลี่ยนทุกเซสชัน และที่อยู่อีเมลก็เปลี่ยนได้ ส่วน NameID แบบ persistent หรือแอตทริบิวต์ ID ที่ไม่เปลี่ยนแปลงนั้นคงที่ หากจับคู่ผู้ใช้ด้วยอีเมล ให้เก็บถาวรบัญชีของผู้ที่ลาออกก่อนที่ที่อยู่อีเมลของเขาจะถูกนำไปกำหนดให้คนอื่น

โดเมนอีเมลไม่ตรงกัน

ไดเรกทอรีมักมีผู้ที่ชื่อสำหรับเข้าสู่ระบบไม่ใช่ที่อยู่อีเมลของตน ผู้รับเหมาที่อยู่ในโดเมนอื่น และพนักงานของธุรกิจที่เข้าซื้อกิจการซึ่งยังใช้โดเมนเก่า หาก LMS จำกัดบัญชีไว้เฉพาะบางโดเมน คนเหล่านี้จะถูกปฏิเสธ จึงควรระบุโดเมนทั้งหมดก่อนเปิดใช้งานจริง

Acadenix ทำอย่างไร

SAML SSO มีในแพ็กเกจ Gold พร้อมคู่มือทีละขั้นสำหรับ Entra ID, Okta และ Google Workspace

  • ทดสอบ แล้วเปิดใช้งาน. คุณบันทึกรายละเอียดของ IdP เป็นฉบับร่าง รัน Test configuration (ทดสอบการตั้งค่า) โดยเข้าสู่ระบบที่ผู้ให้บริการของคุณ แล้วจึงเปิดใช้งาน หากไม่มี claim อีเมล ระบบจะรายงานพร้อมชื่อ claim ที่ผู้ให้บริการของคุณส่งมาจริง
  • การเปลี่ยนแปลงแบบเป็นขั้น. ใบรับรองหรือ tenant ใหม่จะเข้ามาเป็นการอัปเดตการตั้งค่า และการตั้งค่าปัจจุบันยังทำงานต่อไปจนกว่าคุณจะเปิดใช้งาน
  • JIT ภายในโดเมนของคุณ. ผู้ที่ไม่มีบัญชีจะได้บัญชีผู้เรียนเมื่อเข้าสู่ระบบครั้งแรก เฉพาะเมื่ออีเมลอยู่ในโดเมนลงทะเบียนขององค์กรคุณ และคุณปิดฟีเจอร์นี้ได้ เมื่อผู้ที่มีบัญชี Acadenix อยู่แล้วเข้าสู่ระบบผ่าน IdP ของคุณเป็นครั้งแรก Acadenix จะส่งรหัสแบบใช้ครั้งเดียวทางอีเมลเพื่อยืนยันการเชื่อมโยง ซึ่งเกิดขึ้นครั้งเดียวต่อคน
  • เข้าได้ทั้งสองทาง. ผู้ใช้เริ่มจากหน้าเข้าสู่ระบบของคุณ ซึ่งพาไปยัง IdP ของคุณโดยตรงหรือแสดงเป็นปุ่ม หรือเริ่มจากไทล์ใน My Apps, Okta หรือ Google
  • หนึ่งการเชื่อมต่อ หนึ่งองค์กร. การเชื่อมต่อ SAML ไม่ส่งต่อลงไปยังองค์กรที่อยู่ใต้เจ้าของ ซึ่งสำคัญสำหรับกลุ่มที่มีหลายไซต์งาน
  • เส้นทางกู้คืน. หาก IdP ของคุณล่ม ผู้ดูแลระบบยังเข้าสู่ระบบด้วยรหัสแบบใช้ครั้งเดียวที่ส่งทางอีเมลได้ และปิดเส้นทางนี้ไม่ได้

นอกจาก SAML แล้ว ผู้ใช้ยังเข้าสู่ระบบด้วยรหัสทางอีเมลหรือบัญชี Google, Microsoft หรือ LinkedIn ได้ ดูเพิ่มเติมที่หน้าความปลอดภัยของเรา

ประเด็นสำคัญ

  • แลกเปลี่ยน entity ID, ACS URL และ metadata แล้วแมปตัวระบุที่คงที่และอีเมลที่ยืนยันแล้ว
  • จำกัดบัญชี just-in-time ไว้เฉพาะโดเมนของคุณเองและบทบาทต่ำสุด
  • ทดสอบทั้งสองรูปแบบการเข้าสู่ระบบ กรณีที่ถูกปฏิเสธ และเส้นทางกู้คืนก่อนเปิดใช้งานจริง
  • จดวันหมดอายุของใบรับรองลงปฏิทิน และเก็บถาวรบัญชี LMS ของผู้ที่ลาออก

อยากเชื่อมต่อ Acadenix กับผู้ให้บริการยืนยันตัวตนของคุณ? เปรียบเทียบแพ็กเกจได้ที่หน้าราคาของเรา หรือพูดคุยกับเราเกี่ยวกับการตั้งค่าของคุณ

คำถามที่พบบ่อย

สิทธิ์ผู้ดูแลระบบของผู้ให้บริการยืนยันตัวตน (IdP) และของ LMS โดย LMS จะให้ entity ID และ ACS URL แก่คุณ ส่วน IdP จะให้ metadata (entity ID, URL สำหรับเข้าสู่ระบบ และใบรับรองสำหรับลงนาม) ของตัวเอง และคุณต้องตกลงกันว่าจะใช้แอตทริบิวต์ใดระบุตัวตนของแต่ละคน
ได้ หาก LMS รองรับการสร้างบัญชีแบบ just-in-time ซึ่งจะสร้างบัญชีเมื่อมีคนเข้าสู่ระบบครั้งแรก ใน Acadenix บัญชีเหล่านี้เป็นบัญชีผู้เรียน และสร้างเฉพาะให้ผู้ที่อีเมลอยู่ในโดเมนลงทะเบียนขององค์กรคุณ
ผู้ที่พึ่งพา SSO จะเข้าสู่ระบบไม่ได้จนกว่าจะกลับมาใช้ได้ จึงควรมีเส้นทางกู้คืนสำหรับผู้ดูแลระบบ ใน Acadenix ผู้ดูแลระบบเข้าสู่ระบบด้วยรหัสแบบใช้ครั้งเดียวที่ส่งทางอีเมลได้เสมอ และปิดเส้นทางนี้ไม่ได้
โดยทั่วไป SP-initiated ซึ่งผู้ใช้เริ่มที่ LMS ถือว่าเป็นขั้นตอนที่ปลอดภัยกว่า เพราะการตอบกลับผูกกับคำขอที่ LMS สร้างขึ้น ส่วนการเข้าสู่ระบบแบบ IdP-initiated จากไทล์ของแอปก็สะดวกดี และคุณเปิดให้ใช้ได้ทั้งสองแบบ

อ่านต่อ

ความปลอดภัย

การเข้าสู่ระบบแบบไม่ใช้รหัสผ่านสำหรับผู้เรียน: รีเซ็ตน้อยลง ปลอดภัยขึ้น

เข้าสู่ระบบ LMS แบบไม่ใช้รหัสผ่าน: รหัสทางอีเมลและบัญชีที่ทำงานช่วยลดการรีเซ็ตรหัสผ่านได้อย่างไร ข้อแลกเปลี่ยนด้านความปลอดภัย และเมื่อใดควรเพิ่ม SSO

· อ่าน 2 นาที

SCORM

SCORM 1.2 กับ SCORM 2004: ควรเผยแพร่หลักสูตรด้วยเวอร์ชันไหน?

เปรียบเทียบ SCORM 1.2 กับ SCORM 2004 สำหรับผู้สร้างหลักสูตร: สถานะการเรียนจบและสอบผ่าน ข้อมูลสำหรับเรียนต่อ การจัดลำดับ ความเข้ากันได้ และแนวทางเลือกรูปแบบ

· อ่าน 2 นาที

การขายคอร์ส

ขายต่อ LMS: บริการเสริมสร้างรายได้ประจำสำหรับบริษัทที่ปรึกษาด้านการอบรม

กำลังพิจารณาโปรแกรมตัวแทนขายต่อ LMS? วิธีขายต่อ LMS ควบคู่กับบริการของคุณ: การควบคุมราคา กำไรส่วนต่าง การเริ่มต้นใช้งาน การสนับสนุน และเช็กลิสต์ความพร้อม

· อ่าน 2 นาที

พร้อมที่จะ ตัดงานแอดมินออกจากการฝึกอบรม แล้วหรือยัง?

ขอทดลองใช้งาน อัปโหลดหลักสูตร SCORM ที่มีอยู่ แล้วสัมผัสว่า Acadenix เป็นอย่างไรกับเนื้อหาของคุณเอง

เข้าสู่ระบบ