I'm working on a screen sharing app and need to capture Pre-login screen and also foward remote input to login window/screen so remote user can login.
Researching online, it looks like I need to use Pre-Login Agent to do that. However, I found these two threads:
https://forums.developer.apple.com/forums/thread/45536
https://developer.apple.com/forums/thread/726470
Apparently, there is an unpublished workaround related to (r. 5636091). Can anyone provide details about that?
Post
Replies
Boosts
Views
Activity
Working on a file server in c/c++ and need to do following:
Validate user credentials (mac Username & password)
Impersonate user security context in a thread running in a daemon, so that I can enumerate user's home directory and files/folders.
Regarding 2, found API: pthread_setugid_np - is this the right approach? If so, how do I verify user credentials and call this API?
Found this section in TN2083:
Does this mean that its really not possible to impersonate user and access their home directory etc if the user isn't logged in via terminal/console? or if they have FileVault enabled?
Coming from windows development, I'm trying to understand macOS architecture and how to do certain things. I've already read the Root and Login Sessions AND Service and Daemons AND User Switch Notifications documentation so will frame the questions accordingly.
On Windows, there's a concept of User Sessions, each of which contain One or more WindowStations, each of which contain One or more Desktops. Each user gets at least 3 desktops (e.g. Login/Lock/UAC, Screensaver, and default desktop). From what I understand about macOS, it only has Sessions and then a single Desktop. Is that correct? i.e. same display surface is used to display user's desktop, screensaver, sudo prompt and lock screen?
What about login screen? Does each user get its own login screen process/window running in their session? or is there a common login screen for all users running in one particular session (root?). How does Fast User switching effect login screen?
In a daemon, is it possible to get active console session ID? console meaning the session being displayed on the monitor, whether its login screen, lock screen, user's desktop etc.
In a daemon, is it possible to get session switch notifications? E.g. user logged-in and now their desktop is being displayed, user logged-out and now we're back on login screen, or user switched to another user (Fast User switching). How do I get notification of such events in daemon?
If no user is logged in which session is pre-login agent running in? and after login does the session ID assigned to pre-login agent stay the same and user's session is assigned a new session ID?
Is there always one and only one pre-login agent running?
Is it possible to launch pre-login agent and user agents on-demand with custom commandline arguments from a daemon?