OS X認証メカニズムは実際に何をしますか?


13

バックグラウンド 

私は、VPNシングルサインオンを達成するための最良の方法を決定するために、OS Xログインプロセスのより良い理解を収集しようとしています。

間違っている場合は修正してください。

  1. launchd(8)を呼び出してgettyent(3)ttys(5)実行元loginwindow.appを決定し/dev/consoleます。

  2. loginwindow.appsystem.login.console認可データベースが以下のメカニズムを指定する認可権限の取得を試みます(それらの機能の私の理解とともにリストされています)。特権のあるものはauthdプロセス内で(rootとして)実行され、特権のないものはSecurityAgentプロセス内で(_securityagentとして)実行されます。

    • builtin:policy-banner(設定されている場合、ログインウィンドウバナーを表示します)。
    • loginwindow:login (資格情報のプロンプト)。
    • builtin:login-begin
    • builtin:reset-password,privilegedApple IDを使用してパスワードをリセットします)。
    • builtin:forward-login,privileged (起動時にEFIから資格情報を転送します)。
    • builtin:auto-login,privileged (ブート時に自動ログイン資格情報を適用します)。
    • builtin:authenticate,privileged(呼び出すpam_authenticate(3)ためのauthorizationサービス、設定、「UID」コンテキスト値)。
    • PKINITMechanism:auth,privileged (TGTを取得してKerberosを初期化します)。
    • builtin:login-success
    • loginwindow:success (ログインセッションを不正なリモートアクセスから保護します;システムのutmpおよびutmpxデータベースにログインを記録します;コンソール端末の所有者と許可を設定します)。
    • HomeDirMechanism:login,privileged (ユーザーのホームディレクトリをマウントします)。
    • HomeDirMechanism:status (ホームディレクトリのマウントの進行状況を表示します)。
    • MCXMechanism:login (構成プロファイルを適用します)。
    • loginwindow:done (ユーザーの設定をリセットして、グローバルシステムのデフォルトを設定し、ユーザーの設定を使用してマウス、キーボード、およびシステムサウンドを設定し、ユーザーのグループ権限を設定し、ディレクトリサービスからユーザーレコードを取得し、その情報をセッションに適用し、ユーザーのコンピューティングをロードします環境-設定、環境変数、デバイスとファイルのアクセス許可、キーチェーンアクセスなどを含む、Dock、Finder、およびSystemUIServerを起動し、ユーザーのログイン項目を起動します)。

ご質問

各メカニズムの機能の理解を確認したいと思います。

  1. ソースコードは公然と利用可能ですか?builtinメカニズムは、の下/System/Library/CoreServices/SecurityAgentPluginsにあるプラグインによって定義されていることは知っていますが、ビルド元のソースは見つかりません。また、builtinメカニズムがどこで定義されているかもわかりません。

  2. ソースが利用できない場合、メカニズムはどこにも文書化されていますか?

観察

  1. どのようにすることができloginwindow:login、それが呼び出された場合は資格情報を要求する前 builtin:forward-loginbuiltin:auto-login、GUIをバイパスさせることがそのいずれか?そのような資格情報のコンテキストを検査し、存在する場合はスキップしますか?奇妙に思えます。

  2. さらに、アップルの802.1X認証テクニカルホワイトペーパーで説明されているように:

    ログインウィンドウモードが設定され、ユーザーがログインウィンドウでユーザー名とパスワードを入力すると、2つのことが起こります。まず、ログインウィンドウは、ユーザーが入力したユーザー名とパスワードを使用して、802.1X経由でコンピューターをネットワークに対して認証します。802.1X認証が成功すると、ログインウィンドウは同じユーザー名とパスワードを外部ディレクトリに対して認証します。

    その認証の第2段階はpam_opendirectory.soモジュールによって処理され、存在するネットワークに依存しているため、第1段階(802.1Xを介したネットワークへの認証)は必ずその前に発生する必要があります。つまり、builtin:authenticateメカニズムの前に発生する必要があります。

    loginwindowプラグインバイナリの簡単な検査から、このような802.1X認証を処理しているように見えますが、そのプラグイン内で呼び出される唯一のメカニズムbuiltin:authenticateloginwindow:loginです。このメカニズムはログインプロンプトを表示するだけでなく、802.1X認証も試みると考えるのは正しいですか?(もしそうなら、それは少しずさんな私見のように見えるだけでなく、EFI /自動ログインからのクレデンシャルを802.1Xログインウィンドウ認証に使用できないことを示唆しています。)

回答:


1
  1. 私が思い出すところから、loginwindow:loginは、実際にはbuiltin:policy-bannerと同様に、GUIログインウィンドウの生成に使用されます。したがって、残りのアクションの前にスポーンすることは論理的です。そのため、GUIウィンドウは実際には無関係/バイパス可能なものであり、資格情報そのものではありません。

  2. 正確に何を修正し、どのような目的に向けますか?たとえば、他の状況で認証プラグインを呼び出す必要がある場合は、auth.dbを編集してそれを行うことができます。

また、builtin:authenticateサブシステムは、802.1Xとローカル認証の違いを処理する必要があります。


1
builtin:forward-login,privileged

成功したFileVaultログインをOS Xログインウィンドウに転送し、そこでログインする必要をバイパスします。シングルサインオンのようなものです。設定した802.1Xプロファイルを使用していないため、環境でこれを無効にします。私はそれをやってみます。

OS X:FileVaultが有効な場合に自動ログインを無効にする方法

sudo defaults write /Library/Preferences/com.apple.loginwindow DisableFDEAutoLogin -bool YES
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.