スマート カードとリモート デスクトップ サービス
IT プロフェッショナル向けのこのトピックでは、スマート カード サインインを実装するときのリモート デスクトップ サービスの動作について説明します。
スマート カード リダイレクト ロジックと WinSCard API を組み合わせて、複数のリダイレクトされたセッションを 1 つのプロセスにサポートします。
多くのリモート デスクトップ サービス シナリオを有効にするには、スマート カードサポートが必要です。 以下に例を示します。
- 高速ユーザー切り替えまたはリモート デスクトップ サービスの使用。 ユーザーは、リダイレクトされたスマート カード ベースのリモート デスクトップ接続を確立できません。 つまり、高速ユーザー切り替えまたはリモート デスクトップ サービス セッションからの接続試行が成功しない
- 高速ユーザー 切り替えまたはリモート デスクトップ サービス セッションで、ローカル セキュリティ機関 (LSA) プロセスからユーザーのスマート カード リーダーを検索するための暗号化ファイル システム (EFS) の有効化。 EFS がスマート カード リーダーまたは証明書を見つけることができない場合、EFS はユーザー ファイルの暗号化を解除できません
リモート デスクトップ サービスのリダイレクト
リモート デスクトップのシナリオでは、ユーザーがサービスを実行するためにリモート サーバーを使用しており、スマート カードはユーザーが使用しているコンピューターに対してローカルです。 スマート カード サインイン シナリオでは、リモート サーバー上のスマート カード サービスは、ユーザーがサインインしようとしているローカル コンピューターに接続されているスマート カード リーダーにリダイレクトされます。
リモート デスクトップ リダイレクト
リダイレクト モデルに関する注意事項:
- このシナリオは、リモート デスクトップ サービスを使用するコンピューター上のリモート サインイン セッションです。 リモート セッション ( クライアント セッションとしてラベル付け) では、ユーザーは
net use /smartcard
- 矢印は、リモート デスクトップ接続 (RDC) クライアント コンピューターに接続されているスマート カード リーダーでユーザーのスマート カードに到達するまで、ユーザーがコマンド プロンプトで PIN を入力した後の PIN のフローを表します
- 認証は、セッション 0 の LSA によって実行されます
- CryptoAPI 処理は LSA (
lsass.exe
) で実行されます。 これは、RDP リダイレクター (rdpdr.sys
) がプロセスごとのコンテキストではなくセッションごとを許可するためです。 - ScHelper ライブラリは、Kerberos プロトコルに固有の CryptoAPI ラッパーです
- リダイレクトの決定は、呼び出しを実行するスレッドのセッションに基づいて、スマート カード コンテキストごとに行
SCardEstablishContext
われます
RD セッション ホスト サーバーのシングル サインイン エクスペリエンス
共通基準コンプライアンスの一環として、RDC クライアントは、資格情報マネージャーを使用してユーザーのパスワードまたはスマート カード PIN を取得して保存するように構成できる必要があります。 Common Criteria コンプライアンスでは、アプリケーションがユーザーのパスワードまたは PIN に直接アクセスできない必要があります。
一般的な基準コンプライアンスでは、パスワードまたは PIN が LSA を暗号化せずに残さないことを特に必要とします。 分散シナリオでは、パスワードまたは PIN が信頼された LSA と別の LSA の間を移動できるようにする必要があります。また、転送中に暗号化を解除することはできません。
リモート デスクトップ サービス セッションにスマート カード対応シングル サインイン (SSO) を使用する場合、ユーザーは新しいリモート デスクトップ サービス セッションごとにサインインする必要があります。 ただし、ユーザーは、リモート デスクトップ サービス セッションを確立するために PIN の入力を複数回求められません。 たとえば、リモート コンピューターに存在する Microsoft Word ドキュメント アイコンをダブルクリックすると、PIN の入力を求められます。 この PIN は、資格情報 SSP が確立したセキュリティで保護されたチャネルを使用して送信されます。 PIN は、セキュリティで保護されたチャネル経由で RDC クライアントにルーティングされ、Winlogon に送信されます。 PIN が正しくないか、スマート カード関連のエラーがない限り、ユーザーは PIN の追加のプロンプトを受け取りません。
リモート デスクトップ サービスとスマート カード サインイン
リモート デスクトップ サービスを使用すると、RDC クライアント コンピューターに PIN を入力し、ユーザー名とパスワードに基づく認証と同様の方法で RD セッション ホスト サーバーに送信することで、スマート カードを使用してサインインできます。
さらに、リモート デスクトップ サービスに固有のグループ ポリシー設定は、スマート カード ベースのサインインに対して有効にする必要があります。
リモート デスクトップ セッション ホスト (RD セッション ホスト) サーバーへのスマート カード サインインを有効にするには、RDC クライアント コンピューターにキー配布センター (KDC) 証明書が存在する必要があります。 コンピューターが同じドメインまたはワークグループに属していない場合は、次のコマンドを使用して証明書を展開できます。
certutil.exe -dspublish NTAuthCA "DSCDPContainer"
DSCDPContainer
共通名 (CN) は、通常、証明機関の名前です。
例:
certutil -dspublish NTAuthCA <CertFile> "CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=engineering,DC=contoso,DC=com"
コマンド ライン ツールのこのオプションの詳細については、「 -dsPublish」を参照してください。
ドメイン間でのリモート デスクトップ サービスとスマート カード サインイン
エンタープライズ内のリソースへのリモート アクセスを有効にするには、ドメインのルート証明書をスマート カードにプロビジョニングする必要があります。 ドメインに参加しているコンピューターから、コマンド ラインで次のコマンドを実行します。
certutil.exe -scroots update
コマンド ライン ツールのこのオプションの詳細については、「 -SCRoots」を参照してください。
ドメイン間のリモート デスクトップ サービスの場合、RD セッション ホスト サーバーの KDC 証明書もクライアント コンピューターの NTAUTH ストアに存在する必要があります。 ストアを追加するには、コマンド ラインで次のコマンドを実行します。
certutil -addstore -enterprise NTAUTH <CertFile>
ここで、CertFile は KDC 証明書発行者のルート証明書です。
コマンド ライン ツールのこのオプションの詳細については、「 -addstore」を参照してください。
注
ドメインに参加していないコンピューターからスマート カードを使用してサインインするには、スマート カードにドメイン コントローラーのルート認定が含まれている必要があります。 公開キー インフラストラクチャ (PKI) セキュリティで保護されたチャネルは、ドメイン コントローラーのルート認定なしでは確立できません。
ドメイン全体のリモート デスクトップ サービスへのサインインは、証明書の UPN で 次の形式が使用されている場合にのみ機能します <ClientName>@<DomainDNSName>
。
証明書の UPN には、解決できるドメインが含まれている必要があります。 それ以外の場合、Kerberos プロトコルは、どのドメインに接続するかを決定できません。 この問題は、GPO X509 ドメイン ヒントを有効にすることで解決できます。 この設定の詳細については、「スマート カードのグループ ポリシーとレジストリの設定」を参照してください。