14.3. IdM で SSSD を使用してユーザーとして認証する場合にデータフロー
IdM サーバーまたはクライアントでユーザーとして認証するには、以下のコンポーネントが必要です。
- sshd サービスなどの認証要求を開始するサービス
- PAM (プラグ可能な認証モジュール) ライブラリーとそのモジュール。
- SSSD サービス、そのレスポンダー、およびバックエンド。
- スマートカード認証が設定されている場合は、スマートカードリーダー。
認証サーバー:
- IdM ユーザーは、IdM Kerberos Key Distribution Center (KDC) に対して認証されます。
- Active Directory (AD) ユーザーは、AD ドメインコントローラー (DC) に対して認証されます。
以下の図は、コマンドラインの SSH サービスを介してホストにローカルでログインしようとすると、情報フローを簡単に認証する必要がある場合を示しています。
-
ssh
コマンドで認証を試みると、libpam
ライブラリーがトリガーされます。 libpam
ライブラリー は、認証の試行を要求するサービスに対応する/etc/pam.d/
ディレクトリーの PAM ファイルを参照します。この例では、ローカルホストの SSH サービス経由で認証されている例では、pam_sss.so
ライブラリーは/etc/pam.d/system-auth
設定ファイルを確認し、SSSD PAM のpam_sss.so
エントリーを検出します。auth sufficient pam_sss.so
-
利用可能な認証方法を判断するため、
libpam
ライブラリーはpam_sss
モジュールを開き、SSSD サービスのsssd _pam
PAM レスポンダーにSSS_PAM_PREAUTH
リクエスト を送信します。 -
スマートカード認証が設定されていると、SSSD サービスは一時的な
p11_child
プロセスを生成し、スマートカードを確認し、そこから証明書を取得します。 -
ユーザーにスマートカード認証が設定されていると、
sssd_pam
レスポンダーは、スマートカードの証明書とユーザーを照合します。sssd_pam
レスポンダーは、グループメンバーシップがアクセス制御に影響する可能性があるため、ユーザーが属するグループの検索も実行します。 -
sssd_pam
レスポンダーは、SSS_PAM_PREAUTH
要求をsssd_be
バックエンドレスに送信し、パスワードや 2 要素認証などのサーバーがサポートする認証方法を表示します。SSSD サービスが IPA レスポンダーを使用する IdM 環境では、デフォルトの認証方法は Kerberos です。この例では、ユーザーは簡単な Kerberos パスワードで認証されます。 -
sssd_be
レスポンダーは一時的なkrb5_child
プロセスを起動します。 -
krb5_child
プロセスは、IdM サーバーの KDC に連絡して、利用可能な認証方法を確認します。 KDC はリクエストに応答します。
-
krb5_child
プロセスは応答を評価し、結果をsssd_be
バックエンドプロセスに送信します。 -
sssd_be
バックエンドプロセスが結果を受け取ります。 -
sssd_pam
レスポンダーは結果を受け取ります。 -
pam_sss
モジュールは結果を受け取ります。
-
-
ユーザーにパスワード認証が設定されていると、
pam_sss
モジュールにより、パスワードの入力が求められます。スマートカード認証が設定されていると、pam_sss
モジュールにより、スマートカードの PIN の入力が求められます。 モジュールは、ユーザー名とパスワードを使用して
SSS_PAM_
AUTHENTICATE 要求を送信します。これは以下が実行されます。-
sssd_pam
レスポンダー。 -
sssd_be
バックエンドプロセス。
-
-
sssd_be
プロセスは、KDC に問い合わせる一時的なkrb5_child
プロセスを起動します。 -
krb5_child
process は、ユーザー名とパスワードを使用して KDC から Kerberos チケット保証チケット (TGT) の取得を試みます。 -
krb5_child
プロセスは、認証の試行の結果を受け取ります。 krb5_child
プロセス:- TGT を認証情報キャッシュに保存します。
-
sssd_be
バックエンドプロセスに認証結果を返します。
認証結果は
sssd_be
プロセスから以下を行います。-
sssd_pam
レスポンダー。 -
pam_sss
モジュール。
-
-
pam_sss
モジュールは、その他のアプリケーションが参照できるように、環境変数をユーザーの TGT の場所で設定します。