OS X認証メカニズムは実際に何をしますか?
バックグラウンド 私は、VPNシングルサインオンを達成するための最良の方法を決定するために、OS Xログインプロセスのより良い理解を収集しようとしています。 間違っている場合は修正してください。 launchd(8)を呼び出してgettyent(3)、ttys(5)実行元loginwindow.appを決定し/dev/consoleます。 loginwindow.appsystem.login.console認可データベースが以下のメカニズムを指定する認可権限の取得を試みます(それらの機能の私の理解とともにリストされています)。特権のあるものはauthdプロセス内で(rootとして)実行され、特権のないものはSecurityAgentプロセス内で(_securityagentとして)実行されます。 builtin:policy-banner(設定されている場合、ログインウィンドウバナーを表示します)。 loginwindow:login (資格情報のプロンプト)。 builtin:login-begin builtin:reset-password,privileged(Apple 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を起動し、ユーザーのログイン項目を起動します)。 ご質問 各メカニズムの機能の理解を確認したいと思います。 ソースコードは公然と利用可能ですか? 非builtinメカニズムは、の下/System/Library/CoreServices/SecurityAgentPluginsにあるプラグインによって定義されていることは知っていますが、ビルド元のソースは見つかりません。また、builtinメカニズムがどこで定義されているかもわかりません。 ソースが利用できない場合、メカニズムはどこにも文書化されていますか? 観察 どのようにすることができloginwindow:login、それが呼び出された場合は資格情報を要求する前 builtin:forward-loginとbuiltin:auto-login、GUIをバイパスさせることがそのいずれか?そのような資格情報のコンテキストを検査し、存在する場合はスキップしますか?奇妙に思えます。 さらに、アップルの802.1X認証テクニカルホワイトペーパーで説明されているように: ログインウィンドウモードが設定され、ユーザーがログインウィンドウでユーザー名とパスワードを入力すると、2つのことが起こります。まず、ログインウィンドウは、ユーザーが入力したユーザー名とパスワードを使用して、802.1X経由でコンピューターをネットワークに対して認証します。802.1X認証が成功すると、ログインウィンドウは同じユーザー名とパスワードを外部ディレクトリに対して認証します。 その認証の第2段階はpam_opendirectory.soモジュールによって処理され、存在するネットワークに依存しているため、第1段階(802.1Xを介したネットワークへの認証)は必ずその前に発生する必要があります。つまり、builtin:authenticateメカニズムの前に発生する必要があります。 loginwindowプラグインバイナリの簡単な検査から、このような802.1X認証を処理しているように見えますが、そのプラグイン内で呼び出される唯一のメカニズムbuiltin:authenticateはloginwindow:loginです。このメカニズムはログインプロンプトを表示するだけでなく、802.1X認証も試みると考えるのは正しいですか?(もしそうなら、それは少しずさんな私見のように見えるだけでなく、EFI /自動ログインからのクレデンシャルを802.1Xログインウィンドウ認証に使用できないことを示唆しています。)