第9章 スマートカードで PKINIT を使用した Active Directory ユーザーとしての認証
Active Directory (AD) ユーザーは、スマートカードを使用して、IdM に参加しているデスクトップクライアントシステムに認証し、クライアントからシングルサインオン (SSO) 認証用の Kerberos Ticket-Granting Ticket (TGT) を取得できます。このプロセスは、スマートカード認証が必須であるため、パスワードによるログインを使用できない AD ユーザーアカウントを対象としています。
以下の手順は、Kerberos サービス側で pkinit
認証インジケーターが必須となっている IdM リソースへのアクセスには使用できません。このプロセスでは、IdM KDC ではなく、Active Directory Kerberos Distribution Center (AD KDC) から TGT を取得するためです。必要な認証インジケーターが TGT に含まれていないため、結果として IdM サービスがアクセスを拒否します。
IdM ユーザーが IdM サービスにアクセスできるように PKINIT 認証を有効にするには、Kerberos チケットポリシーの管理 を参照してください。
前提条件
- IdM サーバーはスマートカード認証用に設定されています。詳細は、スマートカード認証用の IdM サーバーの設定 または Ansible を使用したスマートカード認証用の IdM サーバー設定 を参照してください。
- クライアントはスマートカード認証用に設定されている。詳細は、スマートカード認証用の IdM クライアントの設定 または Ansible を使用したスマートカード認証用の IdM クライアントの設定 を参照してください。
-
krb5-pkinit
パッケージがインストールされている。 - AD サーバーが、スマートカード証明書を発行した認証局 (CA) を信頼するように設定されている。CA 証明書を NTAuth ストアにインポート (Microsoft サポート を参照) し、CA を信頼できる CA として追加します。詳細は、Active Directory のドキュメントを参照してください。
手順
スマートカード証明書を発行した CA を信頼するように Kerberos クライアントを設定します。
-
IdM クライアントで、
/etc/krb5.conf
ファイルを開きます。 ファイルに以下の行を追加します。
[realms] AD.DOMAIN.COM = { pkinit_eku_checking = kpServerAuth pkinit_kdc_hostname = adserver.ad.domain.com }
[realms] AD.DOMAIN.COM = { pkinit_eku_checking = kpServerAuth pkinit_kdc_hostname = adserver.ad.domain.com }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
IdM クライアントで、
ユーザー証明書に証明書失効リスト (CRL) ディストリビューションポイント拡張が含まれていない場合は、失効エラーを無視するように AD を設定します
以下の REG 形式のコンテンツをプレーンテキストファイルに保存し、Windows レジストリーにインポートします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow または、
regedit.exe
アプリケーションを使用して手動で値を設定することもできます。- Windows システムを再起動して変更を適用します。
Identity Management クライアントで
kinit
ユーティリティーを使用して認証します。Active Directory ユーザーに、ユーザー名とドメイン名を指定します。kinit -X X509_user_identity='PKCS11:opensc-pkcs11.so' ad_user@AD.DOMAIN.COM
$ kinit -X X509_user_identity='PKCS11:opensc-pkcs11.so' ad_user@AD.DOMAIN.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -X
オプションはopensc-pkcs11.so module
を pre-authentication 属性として指定します。