チュートリアル:WCF-NetTcp アダプターでのメッセージ セキュリティ モードの使用
Note
アダプターの詳細については、「BizTalk Serverのアダプター」を参照してください。
はじめに
このチュートリアルでは、windows Communication Foundation (WCF) メッセージ セキュリティ モードを使用するように WCF-NetTcp アダプターを構成する方法について説明します。このモードでは、WS-Security 仕様を使用して、アダプターが送信するメッセージをセキュリティで保護します。 この仕様は、SOAP メッセージ レベルでの機密性、整合性、および認証を実現する SOAP メッセージング プロトコルの機能強化を示しています。 メッセージ セキュリティ モードでは、セキュリティ モードの組み合わせに応じて、暗号化/解読や署名/検証を目的とするオペレーションに対して、サービス証明書を指定する必要があります。
WCF-NetTcp アダプターは、NetTcpBinding バインドを使用して、WCF クライアントと WCF リモート サービスの間で通信します。 このアダプタからは、SOAP セキュリティ、信頼性、およびトランザクションの各機能にフル アクセスできます。 これにより、オーケストレーションとスキーマを WCF サービスとして発行でき、また、オーケストレーションが外部 WCF サービスを使用する機能も提供されます。 このアダプタは、TCP トランスポートを使用し、メッセージではバイナリ エンコードを使用します。 WCF-NetTcp アダプターは、送信アダプターと受信アダプターの 2 つで構成されます。
このチュートリアルでは、Active Directory 証明書サービスを使用して、メッセージ セキュリティ モードの証明書を作成する方法について説明します。 サーバー用とクライアント用の証明書を作成してから、メッセージ セキュリティ モードでそれらの証明書を使用するように WCF-NetTcp 受信場所を構成します。 WCF クライアントを使用すると、XML 暗号化構文と処理に従って、暗号化された状態の受信場所にメッセージを送信します。
このチュートリアルを完了すると、次のタスクを実行できるようになります。
Active Directory 証明書サービスを使用して証明書要求を作成し、証明書を発行してプロセスを完了する。
BizTalk Server管理コンソールから、メッセージ セキュリティ モードを使用するように WCF-NetTcp アダプターを構成します。
前提条件
このサンプルの手順を実行するには、環境に次の前提条件がインストールされていることを確認します。
アセンブリをビルドして展開プロセスを実行するコンピューターと、サンプルを実行するコンピューターの両方に、Microsoft Windows Server 2008 SP2、Microsoft .NET Framework 4.5、および Microsoft BizTalk Serverが必要です。
アセンブリのビルドと展開プロセスの実行に使用するコンピューターには、Microsoft Visual Studio が必要です。
サンプルを実行するコンピューターには、WCF アダプターと WCF 管理ツールが必要です。 これらは、Microsoft BizTalk Serverのセットアップ中にインストールするオプションです。
管理タスクの実行に使用するコンピューターで、BizTalk Server管理コンソール内でBizTalk Serverアプリケーション設定を構成するには、BizTalk Server Administrators グループのメンバーであるユーザー アカウントとして を実行する必要があります。 また、アプリケーションの展開、ホスト インスタンスの管理、およびその他の必要なタスクを実行するには、このユーザー アカウントはローカル管理者グループのメンバーである必要もあります。
WCF 機能を必要とする任意のコンピューターで、 の WCF サンプル https://go.microsoft.com/fwlink/?LinkId=135510の 1 回限りのセットアップ手順を完了します。
サンプルを実行し、バインドまたは .msi ファイルをBizTalk Serverにインポートするコンピューターで、ホストが信頼されたホストでないことを確認するか、インポートが失敗します。
このサンプルを実行するコンピューターに、Active Directory 証明書サービスがインストールされていることを確認します。
チュートリアル コードをダウンロードし、コンピューターに抽出する必要があります。 このチュートリアルは、WCF アダプターチュートリアル パッケージ全体の一部です。 WCFAdapterWalkthroughs.exeファイルは、BizTalk Server デベロッパー センター () からhttps://go.microsoft.com/fwlink/?LinkId=194140ダウンロードできます。
このチュートリアルの証明書を作成する
このセクションでは、サービス証明書とクライアント証明書を要求し、証明書を発行して、適切なストアにインストールします。 信頼されている証明書チェーンを使用して証明書を作成するには、Active Directory 証明書サービスを使用します。 「前提条件」において Active Directory 証明書サービスをインストールしていない場合は、コンピューターに Active Directory 証明書サービスをインストールします。 既にインストールされている場合は、手順 2. に進みます。
[スタート] をクリックし、[管理ツール] をポイントして、[サーバー マネージャ] をクリックします。
[サーバー マネージャー] ノードの [追加] をクリックし、[ロール] をクリックします。
これにより、役割の追加ウィザードの [開始する前に] ダイアログが表示されます。 [次へ] をクリックします。
[ サーバーの役割の選択 ] ページ で、[Active Directory 証明書サービス] を選択し、[ 次へ] をクリックし、画面の指示に従ってインストールを完了します。
次の手順に従って、サービス認証の証明書要求を作成します。
インターネット エクスプローラーで、Web サイト
http://localhost/certsrv
にアクセスします。 [ようこそ] ページで、[証明書の要求] をクリックし、[証明書の要求] ページで [証明書の要求の詳細設定] をクリックします。Note
Windows Server 2008 SP2 を証明機関として使用し、Windows Server 2008 SP2 コンピューターに証明書要求を要求すると、 "証明書の登録を完了するには、CA の Web サイトが HTTPS 認証を使用するように構成されている必要があります" というエラーが表示されることがあります。 このエラーが発生した場合は、Web 証明書 (SSL) を使用して登録 Web サイトを構成する必要があります。 この作業の詳細については、次のリンクを参照してください。
[ 高度な証明書要求 ] ページで、[作成] をクリック し、この CA に要求を送信します。
[高度な証明書要求] ページで、[名前] テキスト ボックスに「」と入力
localhost
し、[証明書の種類] ドロップダウン リストから [サーバー認証証明書] を選択し、[送信] をクリックします。
次の手順に従って、クライアント認証の証明書要求を作成します。
インターネット エクスプローラーで、Web サイト
http://localhost/certsrv
にアクセスします。 [ようこそ] ページで、[証明書の要求] をクリックし、[証明書の要求] ページで [証明書の要求の詳細設定] をクリックします。[ 高度な証明書要求 ] ページで、[作成] をクリック し、この CA に要求を送信します。
[高度な証明書要求] ページで、[名前] テキスト ボックスに「」と入力
contoso
し、[証明書の種類] ドロップダウン リストから [クライアント認証証明書] を選択し、[送信] をクリックします。
Note
クライアント認証証明書は、ドメイン コントローラー以外のコンピューターでBizTalk Serverを実行している場合に使用されます。 これは、アダプターのプロパティ ダイアログで構成されます。
次の手順に従って、証明機関管理コンソールを使用して、証明書を発行します。
[ スタート] ボタンをクリックし、[ 管理ツール] をポイントして、[ 証明機関] をクリックします。
[証明機関] 管理コンソールで、証明機関の名前を展開し、[保留中の要求] をダブルクリックします。
証明機関管理コンソールの右側のウィンドウで、サービス認証証明書の要求を右クリックし、[すべてのタスク] をポイントして、[問題] をクリックします。
証明機関管理コンソールの右側のウィンドウで、クライアント認証証明書の要求を右クリックし、[すべてのタスク] をポイントして、[問題] をクリックします。
証明機関の管理コンソールを閉じます。
次の手順に従って、発行した証明書をコンピューターにインストールします。
インターネット エクスプローラーで、Web サイト
http://localhost/certsrv
にアクセスします。[ ようこそ ] ページで、[ 保留中の証明書要求の状態を表示する] をクリックします。
[ 保留中の証明書要求の状態の表示 ] ページで、サーバー認証証明書をクリックします。
[ 発行された証明書 ] ページで、[ この証明書のインストール] をクリックします。
インターネット エクスプローラーで、Web サイト
http://localhost/certsrv
にアクセスします。[ ようこそ ] ページで、[ 保留中の証明書要求の状態を表示する] をクリックします。
[ 保留中の証明書要求の状態の表示 ] ページで、クライアント認証証明書をクリックします。
[ 発行された証明書 ] ページで、[ この証明書のインストール] をクリックします。
次の手順に従って、発行した証明書が正しくインストールされたことを確認します。
Microsoft 管理コンソール (MMC) を開きます。 これを行うには、[ スタート] をクリックし、[ 実行] をクリックし、「」と入力
mmc
して、[OK] をクリック します。MMC の [ファイル] メニューで、[スナップインの追加と削除] をクリックします。
[スナップインの追加と削除] ダイアログ ボックスで [追加] をクリックします。
[スタンドアロン スナップインの追加] ダイアログ ボックスで、[使用可能なスタンドアロン スナップイン] の一覧から [証明書] を選択し、[追加] をクリックします。
[ 証明書スナップイン ] ダイアログ ボックスで、[ マイ ユーザー アカウント ] オプションを選択し、[完了] をクリック します。
開いているダイアログ ボックスをすべて閉じます。
MMC の [コンソール ルート] ウィンドウで、[ 証明書 - 現在のユーザー] を展開し、[ 個人用] を展開し、[ 証明書] を展開して、前の手順でインストールした証明書が表示されていることを確認します。
このチュートリアル用の BizTalk アプリケーションを作成する
[スタート] ボタンをクリックし、[すべてのプログラム] をポイントし、[Microsoft BizTalk Server 20xx] をポイントして、[BizTalk Server管理] をクリックします。
BizTalk Server管理コンソールで、[BizTalk グループ] を展開し、[アプリケーション] を右クリックし、[新規作成] をポイントして、[アプリケーション] をクリックします。
[ アプリケーションのプロパティ ] ダイアログ ボックスの [ 全般 ] タブで、「」と入力
WcfMessageSecurity
し、[OK] をクリック します。次の手順に従って、BizTalk アプリケーションの WCF-NetTcp アダプターを使用する受信場所を作成します。
BizTalk Server管理コンソールで、[WcfMessageSecurity] を展開し、[受信ポート] を右クリックし、[新規] をポイントして、[一方向の受信ポート] をクリックします。
[ 受信ポートのプロパティ ] ダイアログ ボックスの [名前 ] テキスト ボックスに「」と入力
WcfMessageSecurity.OrderRequest.Receive
し、[OK] をクリック します。 この受信ポートの名前は厳密には任意ですが、わかりやすい名前にする必要があります。BizTalk Server管理コンソールで、[受信場所] を右クリックし、[新規] をクリックして、[一方向の受信場所] をクリックします。 WCF クライアントは、この受信場所に WCF メッセージを送信します。 WcfMessageSecurity.OrderRequest.Receive 再受信ポートを選択し、[OK] をクリックします。
[ 受信場所のプロパティ ] ダイアログ ボックスの [ 名前 ] テキスト ボックスに「」と入力します
WcfMessageSecurity.OrderRequest.Receive.NetTcp
。 この受信場所の名前は厳密には任意ですが、わかりやすい名前にする必要があります。[受信場所のプロパティ] ダイアログ ボックスの [種類] の横にある [トランスポート] セクションで、ドロップダウン リストから [WCF-NetTcp] を選択し、[構成] をクリックします。
[ WCF-NetTcp トランスポートのプロパティ ] ダイアログ ボックスの [ 全般 ] タブの [ アドレス (URI)] テキスト ボックスに「」と入力
net.tcp://localhost/WcfMessageSecurity
します。[WCF-NetTcp トランスポートのプロパティ] ダイアログ ボックスの [セキュリティ] タブで、[セキュリティ モード] ドロップダウン リストから [メッセージ] を選択し、[メッセージ クライアント資格情報の種類] ドロップダウン リストから [証明書] を選択します。 これにより、メッセージ セキュリティ モードを使用するように WCF-NetTcp アダプターが構成されます。
メッセージ セキュリティ モードで使用するサービス証明書を構成します。 [ WCF-NetTcp トランスポートのプロパティ ] ダイアログ ボックスの [ サービス認定 ] セクションで、[ 参照] をクリックします。 [ サービス証明書の選択 ] ダイアログ ボックスで、前の手順でインストールしたサーバー認証証明書を選択し、[ OK] を クリックしてダイアログ ボックスを閉じ、変更を保存します。
開いているダイアログ ボックスをすべて閉じます。
Note
WCF 受信アダプターを使用してクライアント証明書を認証するには、クライアント証明書の CA 証明書チェーンを、WCF アダプターのホスト インスタンスを実行しているコンピューターの信頼されたルート証明機関証明書ストアにインストールする必要があります。 このチュートリアルでは、証明書サービスが WCF クライアントおよび WCF アダプタと同じコンピュータにインストールされていると想定しているため、コンピュータに CA 証明書チェーンをインストールする必要はありません。
BizTalk アプリケーションの FILE 送信ポートを作成します。 これは、注文要求出力メッセージが WCF サービスを表すオーケストレーションによって送信される場所です。
BizTalk Server管理コンソールで、[WcfMessageSecurity] を展開し、[送信ポート] を右クリックし、[新規] をポイントして、[静的一方向送信ポート] をクリックします。
[ 送信ポートのプロパティ ] ダイアログ ボックスの [ 全般 ] タブの [ 名前 ] テキスト ボックスに「」と入力
WcfMessageSecurity.OrderRequest.Send.FILE
します。[送信ポートのプロパティ] ダイアログ ボックスの [種類] の横にある [トランスポート] セクションで、ドロップダウン リストから [ファイル] を選択し、[構成] をクリックします。
[ファイル トランスポートのプロパティ] ダイアログ ボックスの [全般] タブで、[宛先フォルダー] テキスト ボックスに「」と入力
C:\WCFMessageSecurity\OrderRequestOut
し、[OK] をクリックします。[送信ポートのプロパティ] ダイアログ ボックスの [フィルター] タブで、[BTS] を選択します。[プロパティ] フィールドに ReceivePortName を入力し、[値] フィールドに「」と入力
WcfMessageSecurity.OrderRequest.Receive
し、[OK] をクリックします。 このフィルター式は、クライアントからの受信 WCF メッセージを WcfMessageSecurity.OrderRequest.Receive 受信 ポートにこの送信ポートにルーティングします。
BizTalk アプリケーションに対して WCF クライアントをテストする
BizTalk Server管理コンソールで、[WcfMessageSecurity] を右クリックし、[開始] をクリックします。 [ スタート ] ダイアログ ボックスで、[ 開始] をクリックします。
BizTalk Server管理コンソールで、[プラットフォームの設定] を展開し、[ホスト インスタンス] を展開し、[BizTalkServerApplication] またはその他の適切なホスト インスタンスを右クリックして、[再起動] をクリックします。
このチュートリアルでは、作業フォルダーの C:\WCFMessageSecurity という名前のフォルダーを作成します。 チュートリアルのファイルをこのフォルダーに展開します。
Visual Studio で、C:\WCFMessageSecurity フォルダー内の WcfMessageSecurity.sln ファイルを開きます。
Visual Studio のソリューション エクスプローラーで、WcfClient を展開し、Program.cs を開いて確認します。
クライアントから、前の手順で作成した WCF-NetTcp 受信場所にメッセージが送信されます。
クライアントは NetTcpBinding を使用してチャネルを作成し、クライアント資格情報の種類に証明書を使用するようにバインドを構成します。
クライアントは、前の手順でインストールしたクライアント認証証明書をクライアント認証に使用するようにエンドポイント動作を構成します。
クラス Program は、コマンド プロンプトでこのクライアントからの送信 WCF メッセージを表示する IClientMessageInspector インターフェイスと IEndpointBehavior インターフェイスを実装します。
Visual Studio のソリューション エクスプローラーで、WcfMessageSecurity ソリューションを右クリックし、[リビルド] をクリックします。
Visual Studio の [デバッグ ] メニューの [ デバッグなしで開始 ] をクリックして WcfClient を実行し、WCF-NetTcp 受信場所にメッセージを送信します。 コマンド プロンプトに実行結果が表示されます。
コマンド プロンプトで、注文要求メッセージを確認します。 OrderId フィールドとメッセージの構造に注意してください。
コマンド プロンプトで フォルダーに
C:\WCFMessageSecurity\OrderRequestOut
移動し、WCF クライアントから送信された注文要求メッセージが表示されていることを確認します。コマンド プロンプトを閉じます。