การตรวจสอบสิทธิ์ SAML ใน ChromeOS

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

องค์กรบางแห่งใช้โมเดลที่ซับซ้อนกว่าซึ่งผู้ให้บริการข้อมูลประจำตัว (IdP) ของบุคคลที่สามจะจัดการการตรวจสอบสิทธิ์ การตรวจสอบสิทธิ์ของ Google รองรับโมเดลนี้ผ่านโปรโตคอลภาษามาร์กอัปเพื่อยืนยันความปลอดภัย (SAML) ซึ่งเป็นมาตรฐานอุตสาหกรรม ผู้ดูแลระบบสามารถกำหนดค่าโดเมนให้ใช้การตรวจสอบสิทธิ์ SAML ได้

การขอรับรหัสผ่านของผู้ใช้

ChromeOS ต้องระบุรหัสผ่านของผู้ใช้ที่ป้อนระหว่างการเข้าสู่ระบบเพื่อดำเนินการต่อไปนี้

  • เข้ารหัสข้อมูลของผู้ใช้ที่จัดเก็บไว้ในดิสก์ไดรฟ์
  • ปกป้องหน้าจอล็อก
  • เปิดใช้การเข้าสู่ระบบแบบออฟไลน์เมื่อไม่มีการเข้าถึงเครือข่าย

เมื่อใช้ SAML จะไม่มีการป้อนรหัสผ่านในกล่องโต้ตอบของระบบ ChromeOS โดยตรง แต่จะป้อนภายใน WebView ที่โฮสต์โดยผู้ให้บริการข้อมูลประจำตัว แม้ว่า ChromeOS จะมีสิทธิ์เข้าถึง HTML แต่ก็ไม่มีวิธีที่ง่ายและเป็นมาตรฐานในการรับรหัสผ่าน เนื่องจากไม่ชัดเจนว่าช่องแบบฟอร์มใดมีข้อมูล

เมื่อใช้ SAML คุณจะดูรหัสผ่านของผู้ใช้ได้ 2 วิธี ได้แก่ Credentials Passing API และการคัดลอกรหัสผ่าน

Chrome Credentials Passing API

Google มี Credentials Passing API ที่ผู้ให้บริการข้อมูลประจำตัวสามารถติดตั้งใช้งานในหน้า SAML ใน JavaScript เพื่อส่งข้อมูลที่จำเป็นไปยัง ChromeOS ได้ การตรวจสอบสิทธิ์ของ Google ใช้ API นี้ แต่ผู้ให้บริการข้อมูลประจำตัว SAML ใดก็ได้สามารถใช้ API นี้ได้เช่นกัน

การคัดลอกรหัสผ่าน

ผู้ให้บริการข้อมูลประจำตัว SAML อาจใช้การคัดลอกรหัสผ่านเมื่อไม่รองรับ Credentials Passing API

ในวิธีนี้

  1. หน้าจอการตรวจสอบสิทธิ์จะแทรกสคริปต์เนื้อหาลงใน WebView ที่โฮสต์กระบวนการเข้าสู่ระบบ
  2. Content Script จะระบุช่องป้อนข้อมูล HTML ประเภทรหัสผ่านและคัดลอกเนื้อหาลงในอาร์เรย์ ระบบจะอัปเดตอาร์เรย์เมื่อใดก็ตามที่มีการเปลี่ยนแปลงเนื้อหาของช่องรหัสผ่าน
  3. ระบบจะส่งรหัสผ่านที่คัดลอกมาไปยังหน้าพื้นหลังที่รวบรวมรหัสผ่านเหล่านั้น วิธีนี้จะช่วยให้ระบบบันทึกรหัสผ่านได้แม้ว่าขั้นตอนการเข้าสู่ระบบจะมีการเปลี่ยนเส้นทางหลายครั้งไปยังหน้า HTML ต่างๆ

เมื่อสิ้นสุดโฟลว์การเข้าสู่ระบบ ระบบจะดึงอาร์เรย์ของรหัสผ่านที่คัดลอกจากหน้าพื้นหลัง มี 3 กรณีที่อาจเกิดขึ้น ได้แก่ ไม่มีการคัดลอกรหัสผ่าน มีการคัดลอกรหัสผ่าน 1 รายการ หรือมีการคัดลอกรหัสผ่านมากกว่า 1 รายการ

ไม่มีการคัดลอกรหัสผ่าน

Content Script ค้นหารหัสผ่านในหน้า HTML ที่ผู้ให้บริการข้อมูลประจำตัวแสดงไม่ได้ ผู้ให้บริการข้อมูลประจำตัวอาจไม่ใช้รหัสผ่านแบบเดิม

ในสถานการณ์นี้ ChromeOS จะแจ้งให้ผู้ใช้เลือกตั้งรหัสผ่านด้วยตนเองสำหรับอุปกรณ์ หากไม่มีรหัสผ่าน (เช่น การตรวจสอบสิทธิ์ด้วยสมาร์ทการ์ด, NFC, ไบโอเมตริก) กระบวนการตรวจสอบสิทธิ์ของ ChromeOS อาจดำเนินการต่อโดยไม่ต้องใช้รหัสผ่าน

มีการคัดลอกรหัสผ่าน 1 รายการ

Content Script จะระบุรหัสผ่าน 1 รายการเท่านั้น ซึ่งมักจะเป็นรหัสผ่านของผู้ใช้ที่ใช้ในการตรวจสอบสิทธิ์

ในสถานการณ์นี้ เราน่าจะคัดลอกรหัสผ่านของผู้ใช้ได้อย่างถูกต้อง ChromeOS จะใช้รหัสผ่านที่คัดลอกมาเป็นรหัสผ่านของผู้ใช้เพื่อดำเนินการกระบวนการตรวจสอบสิทธิ์ต่อไป

มีการคัดลอกรหัสผ่านมากกว่า 1 รายการ

Content Script ระบุรหัสผ่านหลายรายการ กรณีนี้อาจเกิดขึ้นได้ในสถานการณ์ต่างๆ เช่น ผู้ให้บริการข้อมูลประจำตัวกำหนดให้ผู้ใช้ป้อนรหัสผ่านถาวรและรหัสผ่านแบบใช้ครั้งเดียวในแบบฟอร์มการเข้าสู่ระบบ

ในสถานการณ์นี้ เราอาจขูดรหัสผ่านจริงของผู้ใช้และช่องรหัสผ่านเพิ่มเติมบางช่องที่ ChromeOS ไม่สนใจ ChromeOS จะแจ้งให้ผู้ใช้ป้อนรหัสผ่านอีกครั้งในข้อความแจ้งรหัสผ่านเพิ่มเติมเพื่อพิจารณาว่ารหัสผ่านใดถูกต้อง

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

การลงทะเบียนขององค์กร

สำหรับการลงทะเบียนระดับองค์กร คุณต้องมีอีเมลของผู้ใช้ที่ลงทะเบียนเพื่อเชื่อมโยงอุปกรณ์กับโดเมนที่ถูกต้อง ระบบจะส่งอีเมลจากเซิร์ฟเวอร์การจัดการอุปกรณ์ (DM) ไปยัง Chrome ในช่องชื่อผู้ใช้ของข้อความ PolicyData ระหว่างการดึงข้อมูลนโยบายของอุปกรณ์ ไม่จำเป็นต้องกำหนดรหัสผ่านของผู้ใช้