メッセージ・フローは、WS-Security が有効にされていない状態でインポートされます。 SOAP over HTTP による TCP/IP モニターの場合と同様に、誰でも Web サービスを呼び出してメッセージを取り込むことができます。 暗号化 (機密性) と署名 (保全性) の形で WS-Security を有効にする方法については、『Address Book サンプルの拡張』を参照してください。
WS-Security の有効化は、WebSphere Message Broker レベルで実行される管理用タスクです。 メッセージ・フローの開発中にセキュリティーを構成することはできません。ポリシーおよびバインディングをブローカー内で構成し、それらをブローカー・アーカイブ (BAR) ファイルのメッセージ・フローと関連付ける必要があります。
Address Book 拡張サンプルでは、コンシューマーとプロバイダーの両方に、次のような同じセキュリティー要件があります。
この情報はすべて、WS-Policy によってセキュリティー・ポリシーに取り込まれます。ポリシーは、複数の WS-Security プロバイダー間での相互運用が可能でなければなりません。 作成するポリシーは、WebSphere Application Server のデフォルトの WS-Security ポリシーと同じなので、WS-Security を追加した後に、ブローカーのプロバイダーとコンシューマーを WebSphere Application Server のプロバイダーとコンシューマーと交換することが可能になります。
このポリシーの実装は、セキュリティー・バインディングに取り込まれます。バインディングは WS-Security プロバイダーに特定であり、WebSphere Application Server との相互運用を可能にするためには、WebSphere Application Server のコンシューマーとプロバイダー用に、ポリシーの WebSphere Application Server バインディングを作成する必要があります。 Address Book 拡張サンプルは、ワークベンチ内にブローカー用のポリシーおよびバインディングを作成する方法を示します。
コンシューマーとプロバイダーが効率的に相互運用されるためには、セキュリティー・ポリシーを共有し、 アウトバウンド・メッセージおよびインバウンド・メッセージに同じ暗号化とサイン方式を適用します。 コンシューマーとプロバイダーのバインディングは、 それらのパースペクティブが異なり、暗号化とサイン方式で異なる鍵が使用されているために、異なっています。 例えば、要求メッセージは、プロバイダーでは着信メッセージですが、コンシューマーでは出力メッセージになります。
サンプルを理解するには、公開鍵暗号方式についての基本的な知識が必要です。公開鍵暗号方式を参照してください。 サンプルでは、2 つの X.509 公開鍵証明書 (公開鍵と秘密鍵) が使用されます。 データが一方の鍵で暗号化されている場合、それは対応する他方の鍵によってのみ暗号化解除されます。 ある人に対するメッセージを暗号化するには、その人の公開鍵を使用する必要があります。秘密鍵を使用してのみ、メッセージを暗号化解除できます。メッセージにサインするには、それを秘密鍵で暗号化する必要があります。 その人の公開鍵を使用することにより、誰でもそれを暗号化解除できます。 通信の相手とするすべての人に、公開鍵を渡すことができます。 秘密鍵は秘密に保ちます。
メッセージの特定の部分に署名を付ける方法と暗号化する方法の詳細については、前のセキュリティー・ポリシーとバインディングのセクションを参照してください。 以下の図は、SOAP メッセージの全体が暗号化およびサインされている様子を示しています。 この図は、コンシューマーおよびプロバイダーがアクセスする鍵ストア内の鍵と、どの鍵を暗号化と署名に使用するかを示しています。
コンシューマーは、その公開鍵 (Cpub)、秘密鍵 (Cpriv)、およびプロバイダーの公開鍵 (Ppub) にアクセスできます。 プロバイダーは、その秘密鍵 (Ppriv)、公開鍵 (Ppub)、およびコンシューマーの公開鍵 (Cpub) にアクセスできます。
コンシューマーはその秘密鍵 (Cpriv) を使用してメッセージにサインし、プロバイダーの公開鍵 (Ppub) を使用してメッセージを暗号化します。 プロバイダーは自分の秘密鍵 (Ppriv) を使用してメッセージを暗号化解除し、コンシューマーの公開鍵 (Cpub) を使用してシグニチャーを検証します。
応答を構成するとき、プロバイダーはその秘密鍵 (Ppriv) を使用してメッセージにサインし、コンシューマーの公開鍵 (Cpub) を使用してメッセージを暗号化します。 コンシューマーはその秘密鍵 (Cpriv) を使用してメッセージを暗号化解除し、プロバイダーの公開鍵 (Ppub) を使用してメッセージのサイン方式を検査します。
どの鍵を使用するか、およびコンシューマーとプロバイダーがどんな順序で暗号化と暗号化解除を行う必要があるかについての詳しい情報は、セキュリティー・バインディングに含まれています。 セットアップ・セクションでは、2 つのセキュリティー・バインディングを作成します。1 つはコンシューマー用、もう 1 つはプロバイダー用です。HTTP を使用するための Address Book サンプルのセットアップまたは JMS トランスポートを使用するための Address Book サンプルのセットアップを参照してください。前の図も参照してください。