Hintergrund
Ich versuche, den OS X-Anmeldevorgang besser zu verstehen, um zu entscheiden, wie VPN Single Sign On am besten funktioniert .
Bitte korrigieren Sie mich, wenn ich falsch liege, aber ich glaube, dass ...
launchd(8)
Anrufegettyent(3)
und bestimmt so austtys(5)
ausführenloginwindow.app
zu/dev/console
.loginwindow.app
Versuche, dassystem.login.console
Autorisierungsrecht zu erwerben , für das die Autorisierungsdatenbank die folgenden Mechanismen spezifiziert (zusammen mit meinem Verständnis ihrer Funktion aufgelistet); diejenigen, die privilegiert sind, werden innerhalb desauthd
Prozesses ausgeführt (als root), während diejenigen, die nicht privilegiert sind, innerhalb desSecurityAgent
Prozesses ausgeführt werden (als _securityagent):builtin:policy-banner
( Zeigt das Anmeldefenster-Banner an , falls festgelegt).loginwindow:login
(fordert zur Eingabe von Anmeldeinformationen auf).builtin:login-begin
builtin:reset-password,privileged
( Führt ein Zurücksetzen des Passworts mithilfe der Apple ID durch. )builtin:forward-login,privileged
(leitet Anmeldeinformationen von EFI beim Booten weiter).builtin:auto-login,privileged
(Wendet beim Booten Anmeldeinformationen für die automatische Anmeldung an.)builtin:authenticate,privileged
(ruftpam_authenticate(3)
für denauthorization
Dienst auf; setzt den Kontextwert "uid").PKINITMechanism:auth,privileged
(Initialisiert Kerberos durch Erhalt eines TGT).builtin:login-success
loginwindow:success
(Sichert die Anmeldesitzung vor nicht autorisiertem Remotezugriff. Zeichnet die Anmeldung in den Datenbanken utmp und utmpx des Systems auf. Legt den Eigentümer und die Berechtigungen für das Konsolenterminal fest.)HomeDirMechanism:login,privileged
(Hängt das Home-Verzeichnis des Benutzers ein).HomeDirMechanism:status
(Zeigt den Fortschritt der Bereitstellung des Basisverzeichnisses an.)MCXMechanism:login
(Gilt für Konfigurationsprofile.)loginwindow:done
(Setzt die Benutzereinstellungen auf globale Systemstandards zurück. Konfiguriert Maus, Tastatur und Systemsound anhand der Benutzereinstellungen. Stellt die Gruppenberechtigungen des Benutzers ein. Ruft den Benutzerdatensatz von Directory Services ab und wendet diese Informationen auf die Sitzung an. Lädt den Computer des Benutzers Umgebung - einschließlich Einstellungen, Umgebungsvariablen, Geräte- und Dateiberechtigungen, Schlüsselbundzugriff usw., startet Dock, Finder und SystemUIServer, startet die Anmeldeelemente für den Benutzer.
Fragen
Ich möchte sehr gerne mein Verständnis der Funktionen der einzelnen Mechanismen bestätigen:
Steht ihr Quellcode offen zur Verfügung? Ich weiß, dass die Nicht-
builtin
Mechanismen durch Plugins definiert sind, die sich unter befinden/System/Library/CoreServices/SecurityAgentPlugins
, aber ich kann die Quelle, aus der sie erstellt wurden, nicht finden. Ich kann auch nicht herausfinden, wo diebuiltin
Mechanismen definiert sind.Wenn die Quelle nicht verfügbar ist, sind die Mechanismen irgendwo dokumentiert?
Beobachtungen
Wie können
loginwindow:login
Anmeldeinformationen abgefragt werden, wenn sie zuvor aufgerufen wurdenbuiltin:forward-login
undbuiltin:auto-login
die GUI umgangen wird? Überprüft es den Kontext auf solche Anmeldeinformationen und überspringt sich selbst, wenn sie vorhanden sind? Erscheint merkwürdig.Darüber hinaus wird im technischen Whitepaper zur 802.1X-Authentifizierung von Apple Folgendes beschrieben :
Wenn der Anmeldefenstermodus konfiguriert ist und ein Benutzer im Anmeldefenster einen Benutzernamen und ein Kennwort eingibt, passieren zwei Dinge. Zunächst authentifiziert das Anmeldefenster den Computer über 802.1X mit dem vom Benutzer eingegebenen Benutzernamen und Kennwort beim Netzwerk. Nach erfolgreicher 802.1X-Authentifizierung authentifiziert das Anmeldefenster denselben Benutzernamen und dasselbe Kennwort im externen Verzeichnis.
Da die zweite Stufe dieser Authentifizierung vom
pam_opendirectory.so
Modul übernommen wird und vom vorhandenen Netzwerk abhängt, muss die erste Stufe (Authentifizierung über 802.1X gegenüber dem Netzwerk) unbedingt vorher erfolgen. Das heißt, es muss vor dembuiltin:authenticate
Mechanismus auftreten.Aus einer gelegentlichen Überprüfung der
loginwindow
Plug-in-Binärdatei geht hervor, dass sie eine solche 802.1X-Authentifizierung handhabt - aber der einzige Mechanismus, der zuvor in diesem Plug-in aufgerufen wurde,builtin:authenticate
istloginwindow:login
. Stimmt es, dass dieser Mechanismus nicht nur die Anmeldeaufforderung anzeigt, sondern auch die 802.1X-Authentifizierung versucht? (Wenn dies der Fall ist, scheint dies nicht nur ein wenig schlampig zu sein, sondern weist auch darauf hin, dass Anmeldeinformationen von EFI / Auto-Login nicht für die 802.1X-Anmeldefensterauthentifizierung verwendet werden können.)