พื้นหลัง
ฉันพยายามที่จะรวบรวมความเข้าใจที่ดีขึ้นของการเข้าสู่ระบบ OS X, เพื่อที่จะตัดสินใจวิธีที่ดีที่สุดเพื่อให้บรรลุVPN Single Sign On
โปรดแก้ไขให้ฉันด้วยถ้าฉันผิด แต่ฉันเชื่อว่า -
launchd(8)
เรียกgettyent(3)
จึงกำหนดจากttys(5)
การดำเนินการสำหรับloginwindow.app
/dev/console
loginwindow.app
พยายามที่จะได้รับsystem.login.console
สิทธิ์การอนุญาตซึ่งฐานข้อมูลการอนุญาตระบุกลไกต่อไปนี้ (แสดงพร้อมกับความเข้าใจในการทำงานของพวกเขา); ผู้ที่มีสิทธิ์ใช้งานภายในauthd
กระบวนการ (เป็น root) ในขณะที่รายการที่ไม่ได้รับสิทธิ์ให้ดำเนินการภายในSecurityAgent
กระบวนการ (เป็น _securityagent):builtin:policy-banner
(แสดงแบนเนอร์หน้าต่างเข้าสู่ระบบหากตั้งค่าไว้)loginwindow:login
(แจ้งขอข้อมูลประจำตัว)builtin:login-begin
builtin:reset-password,privileged
(ทำการรีเซ็ตรหัสผ่านโดยใช้ Apple ID )builtin:forward-login,privileged
(ส่งต่อข้อมูลประจำตัวจาก EFI เมื่อบูต)builtin:auto-login,privileged
(ใช้ข้อมูลรับรองการเข้าสู่ระบบอัตโนมัติเมื่อบูต)builtin:authenticate,privileged
(จะเรียกpam_authenticate(3)
สำหรับauthorization
บริการชุด "โพสต์" ค่าบริบท)PKINITMechanism:auth,privileged
(เริ่มต้น Kerberos โดยรับ TGT)builtin:login-success
loginwindow:success
(รักษาความปลอดภัยเซสชั่นเข้าสู่ระบบจากการเข้าถึงระยะไกลที่ไม่ได้รับอนุญาตบันทึกการเข้าสู่ระบบในฐานข้อมูล utmp และ utmpx ของระบบตั้งค่าเจ้าของและสิทธิ์สำหรับเทอร์มินัลคอนโซล)HomeDirMechanism:login,privileged
(เมาท์โฮมไดเร็กทอรีของผู้ใช้)HomeDirMechanism:status
(แสดงความคืบหน้าของการติดตั้งโฮมไดเร็กทอรี)MCXMechanism:login
(ใช้โปรไฟล์กำหนดค่า)loginwindow:done
(รีเซ็ตการตั้งค่าของผู้ใช้เพื่อรวมค่าเริ่มต้นของระบบทั่วโลกกำหนดค่าเมาส์แป้นพิมพ์และเสียงของระบบโดยใช้การตั้งค่าของผู้ใช้ตั้งค่าการอนุญาตกลุ่มของผู้ใช้ดึงบันทึกผู้ใช้จากบริการไดเรกทอรีและใช้ข้อมูลนั้นกับเซสชัน environment— รวมถึงการตั้งค่าตัวแปรสภาพแวดล้อม, สิทธิ์ของอุปกรณ์และไฟล์, การเข้าถึง Keychain และอื่น ๆ ; เปิดตัว Dock, Finder และ SystemUIServer; เปิดตัวรายการล็อกอินสำหรับผู้ใช้)
คำถาม
ฉันอยากจะยืนยันความเข้าใจของฉันเกี่ยวกับฟังก์ชั่นของแต่ละกลไกเป็นอย่างมาก:
ซอร์สโค้ดของพวกเขาเปิดเผยอย่างเปิดเผยหรือไม่ ฉันรู้ว่าไม่ใช่
builtin
กลไกที่ถูกกำหนดโดยปลั๊กอินที่สามารถพบได้ภายใต้/System/Library/CoreServices/SecurityAgentPlugins
แต่ฉันไม่สามารถหาแหล่งที่พวกเขาถูกสร้างขึ้น ฉันไม่สามารถหาที่ที่builtin
กลไกถูกกำหนดได้หากแหล่งกำเนิดไม่พร้อมใช้งานกลไกจะถูกบันทึกไว้ทุกที่หรือไม่?
ข้อสังเกต
จะ
loginwindow:login
ให้พรอมต์สำหรับข้อมูลประจำตัวได้อย่างไรหากมีการเรียกใช้มาก่อนbuiltin:forward-login
และbuiltin:auto-login
สาเหตุใดที่ทำให้ GUI ถูกข้าม? มันตรวจสอบบริบทสำหรับข้อมูลประจำตัวดังกล่าวและข้ามตัวเองหากพวกเขามีอยู่? ดูเหมือนจะแปลกนอกจากนี้ตามที่อธิบายไว้ในเอกสารทางเทคนิค802.1X Authenticationของ Apple :
เมื่อกำหนดค่าโหมดหน้าต่างล็อกอินและประเภทผู้ใช้ในชื่อผู้ใช้และรหัสผ่านที่หน้าต่างเข้าสู่ระบบจะมีสองสิ่งเกิดขึ้น ก่อนอื่นหน้าต่างล็อกอินจะตรวจสอบคอมพิวเตอร์ผ่าน 802.1X ไปยังเครือข่ายโดยใช้ชื่อผู้ใช้และรหัสผ่านที่ผู้ใช้ป้อน หลังจากการตรวจสอบความถูกต้อง 802.1X สำเร็จหน้าต่างการเข้าสู่ระบบจะรับรองความถูกต้องชื่อผู้ใช้และรหัสผ่านเดียวกันกับไดเรกทอรีภายนอก
เนื่องจากขั้นตอนที่สองของการพิสูจน์ตัวตนนั้นได้รับการจัดการโดย
pam_opendirectory.so
โมดูลและขึ้นอยู่กับเครือข่ายที่มีอยู่ขั้นตอนแรก (การตรวจสอบความถูกต้องผ่าน 802.1X ไปยังเครือข่าย) จะต้องเกิดขึ้นก่อนหน้านั้น นั่นคือมันจะต้องเกิดขึ้นก่อนที่builtin:authenticate
กลไกจากการตรวจสอบที่สบาย ๆ ของ
loginwindow
ไบนารีปลั๊กอินมันก็ดูเหมือนว่าจะจัดการกับ 802.1X รับรองความถูกต้อง แต่เช่นกลไกเท่านั้นเรียกว่าภายในปลั๊กอินก่อนที่จะมีbuiltin:authenticate
loginwindow:login
ฉันถูกต้องโดยคิดว่ากลไกนี้ไม่เพียงแสดงพรอมต์การเข้าสู่ระบบ แต่ยังพยายามรับรองความถูกต้อง 802.1X หรือไม่ (ถ้าเป็นเช่นนั้นไม่เพียง แต่ดูเหมือนว่าจะเป็น IMHO ที่เลอะเทอะ แต่ยังแนะนำว่าไม่สามารถใช้ข้อมูลรับรองจาก EFI / การเข้าสู่ระบบอัตโนมัติสำหรับการตรวจสอบความถูกต้องของหน้าต่างการเข้าสู่ระบบ 802.1X ได้)