Was machen die OS X-Autorisierungsmechanismen eigentlich?

13

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 ...

  1. launchd(8)Anrufe gettyent(3)und bestimmt so aus ttys(5)ausführen loginwindow.appzu /dev/console.

  2. loginwindow.appVersuche, das system.login.consoleAutorisierungsrecht 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 des authdProzesses ausgeführt (als root), während diejenigen, die nicht privilegiert sind, innerhalb des SecurityAgentProzesses 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(ruft pam_authenticate(3)für den authorizationDienst 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:

  1. Steht ihr Quellcode offen zur Verfügung? Ich weiß, dass die Nicht- builtinMechanismen 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 die builtinMechanismen definiert sind.

  2. Wenn die Quelle nicht verfügbar ist, sind die Mechanismen irgendwo dokumentiert?

Beobachtungen

  1. Wie können loginwindow:loginAnmeldeinformationen abgefragt werden, wenn sie zuvor aufgerufen wurden builtin:forward-loginund builtin:auto-logindie GUI umgangen wird? Überprüft es den Kontext auf solche Anmeldeinformationen und überspringt sich selbst, wenn sie vorhanden sind? Erscheint merkwürdig.

  2. 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.soModul ü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 dem builtin:authenticateMechanismus auftreten.

    Aus einer gelegentlichen Überprüfung der loginwindowPlug-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:authenticateist loginwindow: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.)

eggyal
quelle

Antworten:

1
  1. Soweit ich mich erinnere, wird loginwindow: login tatsächlich zum Öffnen des GUI-Anmeldefensters verwendet, ähnlich wie builtin: policy-banner. Es ist also logisch, vor dem Rest der Aktionen gespawnt zu werden. Das GUI-Fenster ist also dasjenige, das tatsächlich irrelevant / umgehbar ist, nicht die Anmeldeinformationen selbst.

  2. Was genau möchten Sie ändern und zu welchem ​​Zweck? Wenn Sie beispielsweise benötigen, dass das Autorisierungs-Plugin in anderen Situationen aufgerufen wird, können Sie dies tun, indem Sie auth.db bearbeiten.

Außerdem sollten eingebaute: Authentifizierungs-Subsysteme Unterschiede zwischen 802.1X und lokaler Authentifizierung behandeln.

Overmind
quelle
1
builtin:forward-login,privileged

Leitet die erfolgreiche FileVault-Anmeldung an das OS X-Anmeldefenster weiter und umgeht die Notwendigkeit, sich dort anzumelden. Es ist eine Art Single Sign-On. Ich deaktiviere dies in meiner Umgebung, da das von mir eingerichtete 802.1X-Profil nicht verwendet wurde. Das würde ich versuchen.

OS X: Deaktivieren der automatischen Anmeldung, wenn FileVault aktiviert ist

sudo defaults write /Library/Preferences/com.apple.loginwindow DisableFDEAutoLogin -bool YES
Mistacabbage
quelle