
ความปลอดภัยของการลงชื่อเข้าครั้งเดียว
iOS, iPadOS, macOS และ visionOS รองรับการตรวจสอบสิทธิ์ของเครือข่ายองค์กรผ่านการลงชื่อเข้าครั้งเดียว (SSO) SSO ทำงานร่วมกับผู้ให้บริการข้อมูลประจำตัว (IdP) เพื่อตรวจสอบสิทธิ์ผู้ใช้กับบริการที่พวกเขาได้รับอนุญาตให้เข้าถึง SSO สามารถใช้ได้สำหรับกิจกรรมเครือข่ายจำนวนมาก ตั้งแต่เซสชั่น Safari ที่ปลอดภัยไปจนถึงแอปของบุคคลหรือบริษัทอื่น
iOS, iPadOS, macOS และ visionOS มีส่วนขยาย Kerberos SSO ในตัว นักพัฒนาแอปยังสามารถให้ใช้การลงชื่อเข้าครั้งเดียวของตัวเองโดยใช้ส่วนขยาย SSO ได้อีกด้วย
การลงชื่อเข้าครั้งเดียวแบบ Kerberos
iOS, iPadOS, macOS และ visionOS รองรับการตรวจสอบสิทธิ์ของเครือข่ายองค์กรโดยใช้ Kerberos การรองรับ SSO อิงจากโปรเจ็กต์โอเพนซอร์ส Heimdal และใช้โทเค็น SPNEGO และโปรโตคอล HTTP Negotiate เพื่อทำงานร่วมกับเกตเวย์การตรวจสอบสิทธิ์ที่ใช้ Kerberos และระบบการตรวจสอบสิทธิ์แบบผสานกับ Windows ที่รองรับตั๋ว Kerberos การตรวจสอบสิทธิ์ที่ใช้ใบรับรอง เช่น PKINIT ก็ได้รับการรองรับด้วยเช่นกัน
ส่วนขยาย Kerberos SSO รองรับประเภทการเข้ารหัสต่อไปนี้:
AES-128-CTS-HMAC-SHA1-96
AES-256-CTS-HMAC-SHA1-96
iOS, iPadOS และ visionOS ให้การรองรับแบบยืดหยุ่นสำหรับ SSO กับแอปต่างๆ ที่ใช้คลาส NSURLSession หรือ URLSession เพื่อจัดการการเชื่อมต่อเครือข่ายและการตรวจสอบสิทธิ์ Apple ให้นักพัฒนาทั้งหมดได้ใช้คลาสเหล่านี้เพื่อผสานการเชื่อมต่อกับเครือข่ายอย่างราบรื่นภายในแอปต่างๆ
แอป Mac ที่รองรับการตรวจสอบสิทธิ์ Kerberos ทำงานร่วมกับ SSO ได้ ซึ่งรวมถึงแอปจำนวนมากที่มาพร้อม macOS เช่น ปฏิทิน เมล และ Safari และรวมถึงบริการต่างๆ เช่น การแชร์ไฟล์ การแชร์หน้าจอ และเชลล์ปลอดภัย (SSH) แอปจำนวนมากของบุคคลหรือบริษัทอื่นยังรองรับ Kerberos อีกด้วย
ในการกำหนดค่า SSO การกำหนดค่าช่วยให้บริการจัดการอุปกรณ์สามารถผลักข้อมูลการตั้งค่าที่จำเป็นไปยังอุปกรณ์ได้ ซึ่งรวมถึงการตั้งค่าชื่อหลักของผู้ใช้ (บัญชีผู้ใช้ Active Directory) และการตั้งค่าบริเวณ Kerberos เช่นเดียวกับการกำหนดค่าว่าแอปและ URL เว็บ Safari ใดที่ควรได้รับอนุญาตให้ใช้ SSO
การลงชื่อเข้าครั้งเดียวแบบขยายได้
นักพัฒนาแอปสามารถให้ใช้การลงชื่อเข้าครั้งเดียวของตัวเองโดยใช้ส่วนขยาย SSO สำหรับ iOS, iPadOS, macOS และ visionOS ได้ ส่วนขยาย SSO ใช้งานเมื่อแอปหน้าเว็บหรือแอปดั้งเดิมต้องการใช้ IdP สำหรับการตรวจสอบสิทธิ์ของผู้ใช้ นักพัฒนาสามารถให้ส่วนขยายได้สองประเภท:
ส่วนขยายแบบเปลี่ยนเส้นทาง ซึ่งจะเปลี่ยนเส้นทางไปยัง HTTPS
ส่วนขยายแบบคำถาม/การตอบสนอง เช่น Kerberos
วิธีนี้ช่วยให้การลงชื่อเข้าครั้งเดียวแบบขยายได้รองรับแบบแผนการตรวจสอบสิทธิ์ Open ID Connect (OIDC), OAuth, SAML 2.0 และ Kerberos ส่วนขยาย SSO ยังอาจรองรับการตรวจสอบสิทธิ์ที่ FileVault และหน้าต่างเข้าสู่ระบบบน macOS โดยใช้ SSO ของแพลตฟอร์มอีกด้วย ซึ่งช่วยให้ Mac สามารถดึงข้อมูลโทเค็น SSO ระหว่างการเข้าสู่ระบบได้
ในการใช้ส่วนขยายการลงชื่อเข้าครั้งเดียว แอปสามารถใช้ API AuthenticationServices หรือพึ่งพากลไกการสกัดกั้น URL ที่ระบบปฏิบัติการมีให้ได้ WebKit และ CFNetwork มีชั้นการสกัดกั้นที่ทำให้สามารถรองรับการลงชื่อเข้าครั้งเดียวได้อย่างราบรื่นสำหรับแอปดั้งเดิมหรือแอป WebKit ใดๆ สำหรับการใช้งานส่วนขยายการลงชื่อเข้าครั้งเดียว การกำหนดค่าต้องถูกติดตั้งผ่านบริการจัดการอุปกรณ์ นอกจากนี้ ส่วนขยายแบบเปลี่ยนเส้นทางต้องใช้โดเมนที่เกี่ยวข้องเพื่อพิสูจน์ว่า IdP ที่รองรับรับรู้ถึงการมีอยู่ของส่วนขยาย
การลงชื่อเข้าครั้งเดียวสำหรับแพลตฟอร์ม
เมื่อใช้การลงชื่อเข้าครั้งเดียวสำหรับแพลตฟอร์ม (SSO ของแพลตฟอร์ม) นักพัฒนาสามารถสร้างส่วนขยาย SSO สำหรับ macOS ที่ขยายไปยัง FileVault และหน้าต่างเข้าสู่ระบบของ macOS ได้ SSO ของแพลตฟอร์มรองรับกลไกการตรวจสอบสิทธิ์ต่างๆ ร่วมกับ IdP:
รหัสผ่าน
การตรวจสอบสิทธิ์ด้วยรหัสผ่านรองรับ WS-Trust วิธีนี้ช่วยให้ผู้ใช้ตรวจสอบสิทธิ์ได้แม้ว่า IdP ที่จัดการบัญชีของพวกเขาเป็นแบบรวมศูนย์
ผู้ใช้ยังสามารถเลือกเชื่อมข้อมูลประจำตัวของบัญชีภายในเครื่องของพวกเขากับ IdP ได้อีกด้วย รหัสผ่านบัญชีภายในเครื่องจะเชื่อมข้อมูลโดยอัตโนมัติกับรหัสผ่านบัญชี IdP ของพวกเขา
กุญแจ Secure Enclave
กุญแจจะถูกสร้างและจัดเก็บอยู่ใน Secure Enclave ในระหว่างกระบวนการลงทะเบียนผู้ใช้ และจะถูกใช้เพื่อตรวจสอบสิทธิ์กับ IdP โดยไม่ต้องใช้รหัสผ่าน
สมาร์ทการ์ด
สมาร์ทการ์ดจะถูกใช้เพื่อตรวจสอบสิทธิ์กับ IdP
รหัสการเข้าถึง
บัตรที่จัดเก็บอยู่ในกระเป๋าสตางค์จะถูกใช้สำหรับตรวจสอบสิทธิ์กับ IdP
การลงทะเบียน
ในการใช้ SSO ของแพลตฟอร์ม Mac และผู้ใช้แต่ละรายต้องลงทะเบียนกับ IdP ขึ้นอยู่กับการรองรับของ IdP และการกำหนดค่าที่ปรับใช้ Mac สามารถลงทะเบียนอุปกรณ์อย่างเงียบๆ ในเบื้องหลังได้โดยใช้:
โทเค็นการลงทะเบียนที่ให้มาในการกำหนดค่าการจัดการอุปกรณ์
การพิสูจน์ซึ่งให้การรับประกันอย่างมั่นคงเกี่ยวกับข้อมูลจำเพาะของอุปกรณ์ (UDID และเลขประจำเครื่อง)
การลงทะเบียนผู้ใช้หลังจากลงทะเบียนอุปกรณ์สำเร็จ (นอกจากว่าบัญชีผู้ใช้จะใช้โหมดผู้ใช้ทั่วไปที่ตรวจสอบสิทธิ์แล้ว) ถ้า IdP ต้องใช้ การลงทะเบียนผู้ใช้สามารถแจ้งผู้ใช้เพื่อให้ยืนยันการลงทะเบียนของตนเองได้ สำหรับบัญชีผู้ใช้ภายในเครื่องที่ SSO ของแพลตฟอร์มสร้างขึ้นตามคำร้องขอ การลงทะเบียนของผู้ใช้จะเกิดขึ้นโดยอัตโนมัติในเบื้องหลัง
ระหว่างกระบวนการลงทะเบียน Mac จะสร้างกุญแจสองรายการ: กุญแจการลงชื่ออุปกรณ์และกุญแจการเข้ารหัสอุปกรณ์ กุญแจสามารถใช้สิ่งต่างๆ ต่อไปนี้ได้ โดยขึ้นอยู่กับส่วนขยาย SSO:
NIST P-256 ECDH-ES
HKPE ที่มี NIST P-256, NIST P-384 หรือ X25519
รายการเหล่านี้จะรักษาการเชื่อมต่อที่เชื่อถือแล้วกับ IdP โดยเป็นอิสระจากผู้ใช้ SSO ของแพลตฟอร์มรองรับกุญแจอุปกรณ์ที่แชร์ วิธีนี้ช่วยให้คุณสมบัติต่างๆ สามารถทำงานได้ เช่น SSO ของแพลตฟอร์มในระหว่างการลงทะเบียนการกำหนดสิทธิ์อุปกรณ์อัตโนมัติ, การสร้างบัญชีผู้ใช้ตามคำร้องขอโดยอิงตามข้อมูลจาก IdP, การอนุญาตเครือข่ายและโหมดผู้ใช้ทั่วไปที่ตรวจสอบสิทธิ์แล้ว และใช้กุญแจการลงชื่อและกุญแจการเข้ารหัสเดียวกันสำหรับผู้ใช้ทั้งหมดบนอุปกรณ์ที่ระบุ
หมายเหตุ: ส่วนขยาย SSO ต้องรองรับวิธีที่ขอเพื่อดำเนินการลงทะเบียน นอกจากนี้ยังรองรับการสลับวิธีการอีกด้วย ตัวอย่างเช่น เมื่อสร้างบัญชีผู้ใช้ใหม่พร้อมด้วยชื่อผู้ใช้และรหัสผ่านในระหว่างเข้าสู่ระบบ บัญชีนั้นสามารถสลับไปใช้กุญแจที่มี Secure Enclave รองรับหรือสมาร์ทการ์ดหลังจากเข้าสู่ระบบสำเร็จได้
การดึงข้อมูลโทเค็นและการดึงข้อมูลใหม่
ในการตรวจสอบสิทธิ์ผู้ใช้สำหรับแอปและเว็บไซต์ของตนเองตามต้องการ ส่วนขยาย SSO จะใช้โทเค็น SSO ในการช่วยให้แน่ใจว่าส่วนขยาย SSO พร้อมเสมอสำหรับการดำเนินการตรวจสอบสิทธิ์ SSO ของแพลตฟอร์มจะพยายามดึงข้อมูลใหม่หรือดึงข้อมูลโทเค็นใหม่จาก IdP หากโทเค็น:
หายไป
หมดอายุ
มีอายุเกินสี่ชั่วโมง
ในการขอหรือต่ออายุโทเค็นจาก IdP จะมีการส่งคำขอเข้าสู่ระบบหรือคำขอดึงข้อมูลใหม่ในรูปแบบ JSON Web Token (JWT) และทำการลงชื่อด้วยกุญแจการลงชื่ออุปกรณ์โดยใช้ ES256, ES384 หรือ Ed25519 ซึ่งขึ้นอยู่กับวิธีการที่ส่วนขยาย SSO กำหนด โทเค็นที่สร้างขึ้นเป็นส่วนหนึ่งของเพย์โหลดการตอบสนองซึ่งก็คือ AES-GCM 256 ที่เข้ารหัสโดยใช้กุญแจสาธารณะของกุญแจการเข้ารหัสอุปกรณ์
ถ้าส่วนขยาย SSO ขอการเข้ารหัสรหัสผ่าน รหัสผ่านจะไม่ถูกส่งไปในคำขอเข้าสู่ระบบ และจะถูกแทนที่ด้วยข้อมูลยืนยันแบบฝังที่มีรหัสผ่านอยู่ภายในและเข้ารหัสด้วย AES-GCM 256 กุญแจการเข้ารหัสที่เกี่ยวข้องจะถูกสร้าง (ตามที่ส่วนขยาย SSO กำหนดโดยใช้หนึ่งในกลไกที่มีอยู่ในกุญแจการเข้ารหัสอุปกรณ์ด้วย)
เมื่อกลไกการตรวจสอบสิทธิ์ต้องใช้ลายเซ็นดิจิทัล SSO ของแพลตฟอร์มจะใช้ข้อมูลยืนยัน JWT แบบฝังสำหรับกุญแจ Secure Enclave และการตรวจสอบสิทธิ์สมาร์ทการ์ด ข้อมูลยืนยันต้องมีคุณสมบัติอย่างใดอย่างหนึ่งต่อไปนี้:
ลงชื่อด้วยผู้ตรวจสอบสิทธิ์เมื่อใช้สมาร์ทการ์ด
เข้ารหัสโดยใช้ ES256, ES384 หรือ Ed25519 เมื่อใช้กุญแจ Secure Enclave ตามที่ส่วนขยาย SSO กำหนด
ไม่ว่าจะใช้วิธีการตรวจสอบสิทธิ์ใดก็ตาม โทเค็น SSO ต้องมีคุณสมบัติอย่างใดอย่างหนึ่งต่อไปนี้:
จัดเก็บอยู่ในพวงกุญแจโดยใช้คุณลักษณะการปกป้องข้อมูลในพวงกุญแจ
kSecAttrAccessibleAfterFirstUnlockThisDeviceOnlyแชร์กับส่วนขยาย SSO เท่านั้น
ไม่สามารถเคลื่อนย้ายได้