付録 D
この付録では、クレーム ベースのアプリケーションで使用されるデジタル証明書の一覧を示します。これを表形式で確認するには、CodePlex の「クレーム ベース ID およびアクセス コントロール ガイド」(https://claimsid.codeplex.com) を参照してください。
ブラウザー ベースのアプリケーションの証明書
ブラウザー ベースのシナリオでは、証明書は発行者側、または Web アプリケーションをホストするコンピューター側で使用されます。クライアント コンピューターには、証明書は格納されません。
発行者側 (ブラウザー シナリオ)
ブラウザー ベースのシナリオでは、発行者側に次の証明書があります。
TLS/SSL の証明書 (発行者、ブラウザー シナリオ)
TLS (Transport Layer Security) プロトコル/SSL (Secure Sockets Layer) プロトコルは、証明書を使用することにより、発行者との通信、たとえば、発行者に送信される資格情報などを保護します。この目的は、MITM (man-in-the-middle) 攻撃、傍受、および再生攻撃を避けることです。
要件: 証明書のサブジェクト名は、証明書を提供するホストのドメイン ネーム システム (DNS) 名と一致する必要があります。ブラウザーは、通常、ブラウザーに信頼されているルート証明機関のいずれかに対する信頼チェーンを証明書が持っていることを確認します。
推奨証明書ストア: LocalMachine\My
例 : CN=login.adatumpharma.com
トークン署名証明書 (発行者、ブラウザー シナリオ)
発行者によるトークン署名証明書は、トークンの整合性とソースの確認を保証する XML デジタル署名を生成するために使用されます。
要件: 発行者を実行するワーカー プロセス アカウントは、証明書の秘密キーにアクセスする必要があります。
推奨証明書ストア: LocalMachine\My および ADFS 2.0 データベース (ADFS 2.0 が発行者の場合は、ADFS 2.0 データベースがコピーを保持します)。
例: CN=adatumpharma-tokensign.com
注意
証明書のサブジェクト名は、DNS 名に一致する必要はありません。証明書の目的を示す名前を証明書に付けることをお勧めします。
オプションのトークン暗号化証明書 (発行者、ブラウザー シナリオ)
トークン暗号化証明書は、SAML トークンをセキュリティで保護します。トークンの暗号化はオプションですが、お勧めします。たとえば、チャネル全体をセキュリティで保護する TLS/SSL を選択することが考えられます。
要件: 公開キーのみが必要です。秘密キーは、暗号化解除する証明書利用者が所有します。
推奨証明書ストア: LocalMachine\TrustedPeople、LocalMachine\AddressBook、または ADFS 2.0 データベース (ADFS 2.0 が発行者の場合は、ADFS 2.0 データベースが証明書を保持します)。
例: CN=a-expense.adatumpharma-tokenencrypt.com
注意
トークンの暗号化はオプションですが、原則としてお勧めします。TLS/SSL の使用は、既に、転送中のトークンの機密性を保証するための手段になっています。これは、クレーム値が機密情報である場合に使用することが考えられる、追加的なセキュリティ手段です。
Web アプリケーション サーバー側
ブラウザー ベースのシナリオでは、Web アプリケーション サーバー側に次の証明書があります。
TLS/SSL の証明書 (Web サーバー、ブラウザー シナリオ)
TLS (Transport Layer Security)/SSL (Secure Sockets Layer) プロトコルは、証明書を使用して Web アプリケーション サーバーとの通信 (たとえば、サーバーにポストされる SAML トークンに関する通信) を保護します。この目的は、MITM (man-in-the-middle) 攻撃、傍受、および再生攻撃を避けることです。
要件: 証明書のサブジェクト名は、証明書を提供するホストの DNS 名と一致する必要があります。ブラウザーは、通常、証明書が、ブラウザーに信頼されているルート証明機関のいずれかに対する信頼チェーンを持っていることを確認します。
推奨証明書ストア: LocalMachine\My
例: CN=a-expense.adatumpharma.com
トークン署名の確認 (Web サーバー、ブラウザー シナリオ)
Web アプリケーション サーバーには、SAML トークン署名の確認に使用する証明書の拇印があります。発行者は、デジタル署名された各セキュリティ トークンに証明書を埋め込みます。Web アプリケーション サーバーは、デジタル署名の拇印 (ハッシュ コード) が署名証明書の拇印と一致するかどうかをチェックします。WIF と ADFS は、既定で公開キーをトークンに埋め込んでいます。
要件: 発行者の証明書の拇印は、アプリケーションの Web.config ファイルの <issuerNameRegistry> セクションに存在する必要があります。
推奨証明書ストア: なし。
例: d2316a731b59683e744109278c80e2614503b17e (これは、CN=adatumpharma-tokensign.com を含む証明書の拇印です。)
注意
証明書 (発行者の公開キー) がトークンに埋め込まれている場合、署名確認は WIF によって自動的に行われます。埋め込まれていない場合は、IssuerTokenResolver を構成して公開キーを見つける必要があります。これは、相互運用シナリオでは一般的です。しかし、WIF と ADFS は常に完全な公開キーを埋め込みます。
トークン署名のチェーン信頼の確認 (Web サーバー、ブラウザー シナリオ)
Web アプリケーション サーバーには、発行者トークン署名証明書への信頼されている証明書チェーンを確認するために使用される証明書があります。
要件: 発行者証明書の公開キーが LocalMachine\TrustedPeople にインストールされているか、信頼されているルート証明機関によって証明書が発行されている必要があります。
推奨証明書ストア: LocalMachine\TrustedPeople のみ (証明書が信頼されているルート機関で発行されていない場合)。
注意
チェーン信頼の確認は、アプリケーションの Web.config ファイルの WIF 構成セクションの <certificateValidation> 要素の属性によって制御されます。WIF では、この設定が既定でオンにされています。
オプション トークンの暗号化解除 (Web サーバー、ブラウザー シナリオ)
Web アプリケーションには、発行者から受け取って SAML トークンの暗号化解除に使用する (暗号化されている場合) 証明書があります。Web アプリケーションには、公開キーと秘密キーの両方があります。発行者は公開キーだけを保持します。
要件: 暗号化の解除に使用する証明書は、アプリケーションの Web.config の <microsoft.identityModel> セクションの <serviceCertificate> 要素で構成されている必要があります。また、Web サイトの App Pool アカウントは、証明書の秘密キーを読み取るためのアクセス許可を持っている必要があります。
推奨証明書ストア: LocalMachine\My
例: CN=a-expense.adatumpharma-tokenencrypt.com
Cookie 暗号化/暗号化解除 (Web サーバー、ブラウザー シナリオ)
Web アプリケーション サーバーには、ユーザー セッション全体のトークン クレームを "キャッシュする" ために作成されたセッション Cookie の機密性を保持するために使用される証明書があります。
要件: 既定の WIF メカニズムでは、DPAPI を使用して Cookie を暗号化します。そのためには、App Pool アカウントのプロファイルに格納された秘密キーにアクセスする必要があります。App Pool 構成で Load User Profile を true に設定することで、プロファイルがアカウントに読み込まれるようにする必要があります。
推奨証明書ストア: なし
注意
Web ファーム用のオプションの場合は、DPAPI ではなく X.509 証明書を使用するトークン (RsaEncryptionCookieTransform など) を暗号化/暗号化解除するために、別の CookieTransform を使用します。
アクティブ クライアントの証明書
Web サービスとやり取りするアクティブ クライアントを含むシナリオでは、証明書は発行者側、Web サービスをホストするコンピューター側、およびクライアント コンピューター側で使用されます。
発行者側 (アクティブ シナリオ)
アクティブ クライアントのシナリオでは、発行者側に次の証明書があります。
トランスポート セキュリティの証明書 (TLS/SSL) (発行者、アクティブ シナリオ)
TLS (Transport Layer Security)/SSL (Secure Sockets Layer) プロトコルは、証明書を使用して、発行者との通信 (たとえば、発行者に送信される資格情報に関する通信) を保護します。この目的は、MITM (man-in-the-middle) 攻撃、傍受、および再生攻撃を避けることです。
要件: 証明書のサブジェクト名は、証明書を提供するホストの DNS 名と一致する必要があります。ブラウザーは、通常、証明書が、ブラウザーに信頼されているルート証明機関のいずれかに対する信頼チェーンを持っていることを確認します。
推奨証明書ストア: LocalMachine\My
例: CN=login.adatumpharma.com
メッセージ セキュリティの証明書 (発行者、アクティブ シナリオ)
証明書は、クライアントと発行者との間の通信をメッセージ レベルで保護するために使用されます。
要件: 実装対象であるカスタム発行者の場合、サービス資格情報は WCF 発行者側で、たとえば、発行者の Web.config ファイルの <serviceCertificate> セクションを使用して構成されます。
ADFS 2.0 発行者の場合、これは MMC コンソールを使用して構成されます。
推奨証明書ストア: LocalMachine\My または ADFS データベース
例: CN=login.adatumpharma.com
トークン署名証明書 (発行者、アクティブ シナリオ)
発行者によるトークン署名証明書は、トークンの整合性とソースの確認を保証する XML デジタル署名を生成するために使用されます。
要件: 発行者を実行するワーカー プロセス アカウントは、証明書の秘密キーにアクセスする必要があります。
推奨証明書ストア: LocalMachine\My および ADFS 2.0 データベース
例: CN=adatumpharma-tokensign.com
注意
証明書のサブジェクト名は、DNS 名に一致する必要はありません。証明書の目的を示す名前を証明書に付けることをお勧めします。
トークン暗号化証明書 (発行者、アクティブ シナリオ)
トークン暗号化証明書は、SAML トークンをセキュリティで保護します。この証明書は、アクティブ クライアントを使用するときに必要です。
要件: 公開キーのみが必要です。秘密キーは、暗号化解除する証明書利用者が所有します。
推奨証明書ストア: LocalMachine\TrustedPeople、LocalMachine\AddressBook、または ADFS 2.0 データベース
例: CN=a-expense.adatumpharma-tokenencrypt.com
注意
トークンの暗号化はオプションですが、原則としてお勧めします。TLS/SSL の使用は、既に、転送中のトークンの機密性を保証するための手段になっています。これは、クレーム値が機密情報である場合に使用することが考えられる、追加的なセキュリティ手段です。
Web サービス ホスト側
これらは、Web サービスをホストするコンピューターで使用される証明書です。
トランスポート セキュリティの証明書 (TLS/SSL) (Web サービス ホスト、アクティブ シナリオ)
TLS (Transport Layer Security)/SSL (Secure Sockets Layer) プロトコルは、証明書を使用して Web サービスとの通信 (たとえば、発行者によって Web サービスに送信される SAML トークンに関する通信) を保護します。この目的は、MITM (man-in-the-middle) 攻撃、傍受、および再生攻撃の抑止と防止です。
要件: 証明書のサブジェクト名は、証明書を提供するホストの DNS 名と一致する必要があります。アクティブ クライアントは、通常、証明書が、該当するクライアントに信頼されているルート証明機関のいずれかに対する信頼チェーンを持っていることを確認します。
推奨証明書ストア: LocalMachine\My
例: CN=a-expense-svc.adatumpharma.com
メッセージ セキュリティの証明書 (Web サービス ホスト、アクティブ シナリオ)
証明書は、クライアントと Web サービスの間の通信をメッセージ レベルで保護するために使用されます。
要件: サービス資格情報は WCF Web サービス側で、たとえば、Web サービスの Web.config ファイルの <serviceCertificate> セクションを使用して構成されます。
推奨証明書ストア: LocalMachine\My
例: CN=a-expense-svc.adatumpharma.com
トークン署名の確認 (Web サービス ホスト、アクティブ シナリオ)
Web サービス ホストには、SAML トークン署名の確認に使用する証明書の拇印があります。発行者は、デジタル署名された各セキュリティ トークンに証明書を埋め込みます。Web サーバー ホストのサーバーは、デジタル署名の拇印 (ハッシュ コード) が署名証明書の拇印と一致するかどうかをチェックします。WIF と ADFS は、既定で公開キーをトークンに埋め込んでいます。
要件: 発行者の証明書の拇印は、Web サービスの Web.config ファイルの <issuerNameRegistry> セクションに存在する必要があります。
推奨証明書ストア: なし。
例: d2316a731b59683e744109278c80e2614503b17e (これは、CN=adatumpharma-tokensign.com を含む証明書の拇印です)
注意
証明書 (発行者の公開キー) がトークンに埋め込まれている場合、署名確認は WIF によって自動的に行われます。埋め込まれていない場合は、IssuerTokenResolver を構成して公開キーを見つける必要があります。これは、相互運用シナリオでは一般的です。しかし、WIF と ADFS は常に完全な公開キーを埋め込みます。
トークン暗号化 (Web サービス ホスト、アクティブ シナリオ)
Web サーバー ホストには、発行者から受け取って SAML トークンの暗号化解除に使用する証明書があります。Web アプリケーションには、公開キーと秘密キーの両方があります。発行者は公開キーだけを保持します。
要件: 暗号化の解除に使用する証明書は、Web サービスの Web.config ファイルの <microsoft.identityModel> セクションの <serviceCertificate> 要素で構成されている必要があります。また、Web サーバーの App Pool アカウントは、証明書の秘密キーを読み取るためのアクセス許可を持っている必要があります。
推奨証明書ストア: LocalMachine\My
例: CN=a-expense-svc.adatumpharma-tokenencrypt.com
トークン署名のチェーン信頼の確認 (Web サービス ホスト、アクティブ シナリオ)
Web サービス ホストには、発行者トークン署名証明書への信頼されている証明書チェーンを確認するために使用される証明書があります。
要件: 発行者証明書の公開キーが LocalMachine\TrustedPeople にインストールされているか、信頼されているルート証明機関によって証明書が発行されている必要があります。
推奨証明書ストア: LocalMachine\TrustedPeople のみ (証明書が信頼されているルート機関で発行されていない場合)。
注意
チェーン信頼の確認は、Web サービスの Web.config ファイルの WIF 構成セクションの <certificateValidation> 要素の属性によって制御されます。WIF では、この設定が既定でオンにされています。
アクティブ クライアント ホスト側
これらは、アクティブ クライアント コンピューターで使用される証明書です。
メッセージ セキュリティの証明書 (アクティブ クライアント ホスト)
証明書は、クライアントと Web サービスまたは発行者の間の通信をメッセージ レベルで保護するために使用されます。
要件: negotiateServiceCredentials が有効な場合、クライアントは実行時に Web サービスまたは発行者の公開キーを取得します。有効でない場合、メッセージ セキュリティの証明書は、ClientCredentials.ServiceCertificate プロパティを実行時に設定するか、アクティブ クライアントの App.config ファイルの <serviceCertificate> 要素を構成することで、WCF クライアント側で構成されます。サービス資格情報は WCF Web サービス側で、たとえば、Web サービスの Web.config ファイルの <serviceCertificate> セクションを使用して構成されます。
推奨証明書ストア: LocalMachine\TrustedPeople または LocalMachine\AddressBook
例: CN=a-expense-svc.adatumpharma.com
ページのトップへ