पृष्ठभूमि
मैं वीपीएन सिंगल साइन ऑन को प्राप्त करने का सबसे अच्छा तरीका तय करने के लिए, ओएस एक्स लॉगिन प्रक्रिया की बेहतर समझ को चमकाने की कोशिश कर रहा हूं ।
कृपया मुझे सही करें अगर मैं गलत हूं, लेकिन मेरा मानना है कि-
launchd(8)
कॉलgettyent(3)
और इस प्रकार केttys(5)
लिए निष्पादित करने केloginwindow.app
लिए निर्धारित करता है/dev/console
।loginwindow.app
system.login.console
प्राधिकरण अधिकार प्राप्त करने का प्रयास , जिसके लिए प्राधिकरण डेटाबेस निम्नलिखित तंत्र निर्दिष्ट करता है (उनके कार्य की मेरी समझ के साथ एक साथ सूचीबद्ध); वे जोauthd
प्रक्रिया के भीतर विशेषाधिकार प्राप्त हैं (रूट के रूप में), जबकि वे जो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
(टीजीटी प्राप्त करके केर्बरोस को इनिशियलाइज़ करता है)।builtin:login-success
loginwindow:success
(अनधिकृत रिमोट एक्सेस से लॉगिन सत्र को सुरक्षित करता है; सिस्टम के utmp और utmpx डेटाबेस में लॉगिन को रिकॉर्ड करता है; कंसोल टर्मिनल के लिए स्वामी और अनुमतियां सेट करता है)।HomeDirMechanism:login,privileged
(उपयोगकर्ता के घर निर्देशिका mounts)।HomeDirMechanism:status
(घर निर्देशिका बढ़ते की प्रगति प्रदर्शित करता है)।MCXMechanism:login
(कॉन्फ़िगरेशन प्रोफाइल लागू करता है)।loginwindow:done
(वैश्विक सिस्टम डिफॉल्ट्स को शामिल करने के लिए उपयोगकर्ता की वरीयताओं को रीसेट करता है; उपयोगकर्ता की वरीयताओं का उपयोग करके माउस, कीबोर्ड और सिस्टम साउंड को कॉन्फ़िगर करता है; उपयोगकर्ता की समूह अनुमतियाँ सेट करता है; निर्देशिका सेवाओं से उपयोगकर्ता रिकॉर्ड को पुनर्प्राप्त करता है और उस जानकारी को सत्र पर लागू करता है, उपयोगकर्ता की कंप्यूटिंग लोड करता है पर्यावरण - वरीयताओं सहित, पर्यावरण चर, डिवाइस और फ़ाइल अनुमतियाँ, कीचेन एक्सेस, और इसी तरह, डॉक, फाइंडर और सिस्टम यूज़रवर लॉन्च करता है, उपयोगकर्ता के लिए लॉगिन आइटम लॉन्च करता है)।
प्रशन
मैं प्रत्येक तंत्र के कार्य के बारे में अपनी समझ की पुष्टि करना चाहूंगा:
क्या उनका सोर्स कोड खुले तौर पर उपलब्ध है? मुझे पता है कि गैर-
builtin
तंत्र को प्लगइन्स द्वारा परिभाषित किया जाता है जो कि नीचे पाया जा सकता है/System/Library/CoreServices/SecurityAgentPlugins
, लेकिन मुझे वह स्रोत नहीं मिल सकता है जहां से वे बनाए गए थे। न ही मैं पा सकता हूं किbuiltin
तंत्र कहां परिभाषित हैं।यदि स्रोत उपलब्ध नहीं है, तो क्या तंत्र कहीं भी प्रलेखित हैं?
टिप्पणियों
loginwindow:login
क्रेडेंशियल के लिए कैसे प्रेरित किया जा सकता है यदि इसे पहले ही लागू किया गया हो ,builtin:forward-login
औरbuiltin:auto-login
दोनों में से कौन जीयूआई को बायपास किया जाए? क्या यह ऐसी साख के लिए संदर्भ का निरीक्षण करता है और यदि वे मौजूद हैं तो खुद को छोड़ देते हैं? अजीब लगता है।इसके अलावा, जैसा कि Apple के 802.1X प्रमाणीकरण तकनीकी श्वेत पत्र में वर्णित है :
जब लॉगिन विंडो मोड कॉन्फ़िगर किया जाता है और एक उपयोगकर्ता नाम और लॉगिन विंडो में पासवर्ड टाइप होता है, तो दो चीजें होंगी। सबसे पहले, लॉगिन विंडो उपयोगकर्ता के नाम और पासवर्ड का उपयोग करके नेटवर्क में 802.1X के माध्यम से कंप्यूटर को प्रमाणित करेगी और उपयोगकर्ता द्वारा दर्ज किया गया पासवर्ड। 802.1X प्रमाणीकरण सफल होने के बाद, लॉगिन विंडो बाहरी निर्देशिका के लिए उसी उपयोगकर्ता नाम और पासवर्ड को प्रमाणित करेगी।
चूंकि उस प्रमाणीकरण के दूसरे चरण को
pam_opendirectory.so
मॉड्यूल द्वारा नियंत्रित किया जाता है और यह मौजूद नेटवर्क पर निर्भर है, इसलिए पहले चरण (802.1X के माध्यम से नेटवर्क के लिए प्रमाणीकरण) आवश्यक रूप से पहले होना चाहिए। यही है, यहbuiltin:authenticate
तंत्र से पहले होना चाहिए ।loginwindow
प्लगइन बाइनरी के एक आकस्मिक निरीक्षण से , ऐसा लगता है कि यह इस तरह के 802.1X प्रमाणीकरण को संभालता है - लेकिन उस प्लगइन के भीतर लागू केवल एकमात्र तंत्रbuiltin:authenticate
हैloginwindow:login
। क्या मैं यह सोचने में सही हूं कि यह तंत्र न केवल लॉगिन प्रॉम्प्ट प्रदर्शित करता है, बल्कि फिर 802.1X प्रमाणीकरण का भी प्रयास करता है? (यदि ऐसा है, तो न केवल थोड़ा मैला IMHO लगता है, बल्कि यह भी सुझाव देता है कि EFI / ऑटो-लॉगिन से क्रेडेंशियल्स का उपयोग 802.1X लॉगिन विंडो प्रमाणीकरण के लिए नहीं किया जा सकता है।)