Lý lịch
Tôi đang cố gắng tìm hiểu rõ hơn về quy trình đăng nhập OS X, để quyết định cách tốt nhất để đạt được Đăng nhập một lần VPN .
Xin hãy sửa tôi nếu tôi sai, nhưng tôi tin rằng,
launchd(8)
các cuộc gọigettyent(3)
và do đó xác định từttys(5)
để thực hiệnloginwindow.app
cho/dev/console
.loginwindow.app
cố gắng để có đượcsystem.login.console
quyền ủy quyền, trong đó cơ sở dữ liệu ủy quyền chỉ định các cơ chế sau (được liệt kê cùng với sự hiểu biết của tôi về chức năng của chúng); những cái được đặc quyền chạy trongauthd
tiến trình (với quyền root), trong khi những cái không được chạy đặc quyền trongSecurityAgent
tiến trình (như _securityagent):builtin:policy-banner
(hiển thị biểu ngữ Cửa sổ đăng nhập , nếu được đặt).loginwindow:login
(nhắc nhở về thông tin đăng nhập).builtin:login-begin
builtin:reset-password,privileged
(thực hiện đặt lại mật khẩu bằng Apple ID ).builtin:forward-login,privileged
(chuyển tiếp thông tin đăng nhập từ EFI khi khởi động).builtin:auto-login,privileged
(áp dụng thông tin đăng nhập tự động khi khởi động).builtin:authenticate,privileged
(gọipam_authenticate(3)
choauthorization
dịch vụ; đặt giá trị ngữ cảnh "uid").PKINITMechanism:auth,privileged
(khởi tạo Kerberos bằng cách lấy TGT).builtin:login-success
loginwindow:success
(bảo vệ phiên đăng nhập khỏi truy cập từ xa trái phép; ghi lại thông tin đăng nhập trong cơ sở dữ liệu utmp và utmpx của hệ thống; đặt chủ sở hữu và quyền cho thiết bị đầu cuối giao diện điều khiển).HomeDirMechanism:login,privileged
(gắn kết thư mục nhà của người dùng).HomeDirMechanism:status
(hiển thị tiến trình gắn thư mục nhà).MCXMechanism:login
(áp dụng cấu hình cấu hình).loginwindow:done
(đặt lại tùy chọn của người dùng để bao gồm mặc định hệ thống toàn cầu; định cấu hình chuột, bàn phím và âm thanh hệ thống bằng tùy chọn của người dùng; đặt quyền nhóm người dùng; truy xuất bản ghi người dùng từ Dịch vụ thư mục và áp dụng thông tin đó vào phiên môi trường bao gồm các tùy chọn, biến môi trường, quyền của thiết bị và tệp, truy cập móc khóa, v.v., khởi chạy Dock, Finder và SystemUIServer; khởi chạy các mục đăng nhập cho người dùng).
Câu hỏi
Tôi rất muốn xác nhận sự hiểu biết của tôi về từng chức năng của cơ chế:
Là mã nguồn của họ có sẵn công khai? Tôi biết rằng các
builtin
cơ chế không được xác định bởi các plugin có thể được tìm thấy bên dưới/System/Library/CoreServices/SecurityAgentPlugins
, nhưng tôi không thể tìm thấy nguồn mà chúng được xây dựng. Tôi cũng không thể tìm thấy nơi cácbuiltin
cơ chế được xác định.Nếu nguồn không có sẵn, các cơ chế được ghi nhận ở bất cứ đâu?
Quan sát
Làm thế nào có thể
loginwindow:login
nhắc thông tin đăng nhập nếu nó được gọi trước đóbuiltin:forward-login
vàbuiltin:auto-login
một trong hai điều đó khiến GUI bị bỏ qua? Liệu nó có kiểm tra bối cảnh cho các thông tin như vậy và bỏ qua chính nó nếu chúng có mặt? Có vẻ lạ.Hơn nữa, như được mô tả trong sách trắng kỹ thuật Xác thực 802.1X của Apple :
Khi Chế độ cửa sổ đăng nhập được cấu hình và người dùng nhập tên người dùng và mật khẩu tại cửa sổ đăng nhập, hai điều sẽ xảy ra. Đầu tiên, cửa sổ đăng nhập sẽ xác thực máy tính qua 802.1X vào mạng bằng tên người dùng và mật khẩu người dùng đã nhập. Sau khi xác thực 802.1X thành công, cửa sổ đăng nhập sẽ xác thực cùng tên người dùng và mật khẩu cho thư mục bên ngoài.
Do giai đoạn thứ hai của xác thực đó được xử lý bởi
pam_opendirectory.so
mô-đun và phụ thuộc vào mạng hiện diện, nên giai đoạn đầu tiên (xác thực qua 802.1X vào mạng) nhất thiết phải xảy ra trước đó. Đó là, nó phải xảy ra trướcbuiltin:authenticate
cơ chế.Từ một kiểm tra ngẫu nhiên về
loginwindow
nhị phân plugin, có vẻ như nó xử lý xác thực 802.1X như vậy nhưng cơ chế duy nhất được gọi trong plugin đó trước đóbuiltin:authenticate
làloginwindow:login
. Tôi có đúng không khi nghĩ rằng cơ chế này không chỉ hiển thị lời nhắc đăng nhập mà còn thử xác thực 802.1X? (Nếu vậy, IMHO không chỉ có vẻ hơi cẩu thả mà còn gợi ý rằng thông tin đăng nhập từ EFI / tự động đăng nhập không thể được sử dụng để xác thực cửa sổ đăng nhập 802.1X.)