クライアント検証
サービスは頻繁にメタデータを公開し、クライアント プロキシの型を自動的に生成して構成できるようにします。サービスが信頼できない場合、クライアント アプリケーションでは、セキュリティ、トランザクション、サービス コントラクトの型などに関して、メタデータがクライアント アプリケーションのポリシーに合致しているかどうか検証する必要があります。次のサンプルでは、サービス エンドポイントを検証するクライアント エンドポイントの動作を記述して、サービス エンドポイントを安全に使用できることを確認する方法を示します。
サービスは 4 つのサービス エンドポイントを公開します。1 つ目は WSDualHttpBinding を使用するエンドポイント、2 つ目は NTLM 認証を使用するエンドポイント、3 つ目はトランザクション フローを有効にするエンドポイント、4 つ目は証明書ベースの認証を使用するエンドポイントです。
クライアントは MetadataResolver クラスを使用してサービスのメタデータを取得します。クライアントは検証動作を使用して、二重バインディング、NTLM 認証、およびトランザクション フローを禁止するポリシーを適用します。クライアント アプリケーションは、サービスのメタデータからインポートされた ServiceEndpoint インスタンスごとに InternetClientValidatorBehavior エンドポイント動作のインスタンスを ServiceEndpoint に追加し、その後 Windows Communication Foundation (WCF) クライアントを使用してエンドポイントへの接続を試行します。動作の Validate メソッドはサービスで操作が呼び出される前に実行され、InvalidOperationExceptions をスローすることによってクライアントのポリシーを適用します。
サンプルをビルドするには
- ソリューションをビルドするには、「Windows Communication Foundation サンプルのビルド」の手順に従います。
サンプルを同じコンピュータで実行するには
Setup.bat をサンプルのインストール フォルダで実行します。これにより、サンプルの実行に必要なすべての証明書がインストールされます。
サービス アプリケーションを \service\bin\Debug で実行します。
クライアント アプリケーションを \client\bin\Debug で実行します。クライアント アクティビティがクライアントのコンソール アプリケーションに表示されます。
クライアントとサービス間で通信できない場合は、「トラブルシューティングのヒント」を参照してください。
サンプルの使用が終わったら、Cleanup.bat を実行して証明書を削除してください。他のセキュリティ サンプルでも同じ証明書を使用します。
サンプルを別のコンピュータで実行するには
サーバーで、「setup.bat service」と入力します。setup.bat
サーバーで、App.config を編集して新しい証明書の名前を反映します。つまり、<serviceCertificate> of <serviceCredentials> Element 要素の findValue 属性をコンピュータの完全修飾ドメイン名に変更します。
Service.cer ファイルを、サービス ディレクトリからクライアント コンピュータのクライアント ディレクトリにコピーします。
クライアントで、「setup.bat client」と入力します。setup.bat
client.cs ファイルで、MEX エンドポイントと、既定のサーバー証明書を設定するための findValue のアドレス値を、サービスの新しいアドレスに合わせて変更します。そのためには、localhost をサーバーの完全修飾ドメイン名に置き換えます。再ビルドします。
Client.cer ファイルを、クライアント ディレクトリからサーバーのサービス ディレクトリにコピーします。
クライアントで ImportServiceCert.bat を実行します。これにより、サービス証明書が Service.cer ファイルから CurrentUser - TrustedPeople ストアにインポートされます。
サーバーで ImportClientCert.bat を実行します。これにより、クライアント証明書が Client.cer ファイルから LocalMachine - TrustedPeople ストアにインポートされます。
サービス コンピュータの Visual Studio でサービス プロジェクトをビルドし、service.exe を実行します。
クライアント コンピュータで、client.exe を実行します。
- クライアントとサービス間で通信できない場合は、「トラブルシューティングのヒント」を参照してください。
サンプルの実行後にクリーンアップするには
サンプルの実行が終わったら、サンプル フォルダにある Cleanup.bat を実行します。
メモ : このサンプルを別のマシンで実行している場合、このスクリプトはサービス証明書をクライアントから削除しません。別のコンピュータで証明書を使用する WCF サンプルを実行した場合は、CurrentUser - TrustedPeople ストアにインストールされたサービス証明書を忘れずに削除してください。削除するには、コマンド certmgr -del -r CurrentUser -s TrustedPeople -c -n <サーバー コンピュータの完全修飾名> を実行します。たとえば、certmgr -del -r CurrentUser -s TrustedPeople -c -n server1.contoso.com となります。
関連項目
その他の技術情報
Copyright © 2007 by Microsoft Corporation.All rights reserved.