![]() ![]() ![]() ![]() |
メッセージレベルのセキュリティでは、Web サービス クライアントが AquaLogic Service Bus プロキシ サービスまたはビジネス サービスとの接続を確立した後、プロキシ サービスまたはビジネス サービスがこのメッセージを処理する前に SOAP メッセージに対してセキュリティ チェックが適用されます。メッセージレベルのセキュリティを提供するため、AquaLogic Service Bus は OASIS 標準で定義されている機能を Web サービス セキュリティ (WS-Security) に対して実装しています。
着信メッセージレベルのセキュリティは、クライアントと AquaLogic Service Bus プロキシ サービス間のメッセージに適用されます。このセキュリティは、クライアントからの要求およびクライアントに返される応答メッセージの両方に適用されます。発信メッセージレベルのセキュリティは、AquaLogic Service Bus プロキシ サービスと SOAP-HTTP ビジネス サービス間のメッセージ、または AquaLogic Service Bus プロキシ サービスと SOAP-JMS ビジネス サービス間のメッセージに適用されます。また、このセキュリティは要求と応答の両方に適用されます。
以下の節では、プロキシ サービスまたはビジネス サービスのメッセージレベルでのセキュリティのコンフィグレーションについて説明します。
AquaLogic Service Bus では、HTTP、HTTPS、または JMS プロトコル経由で送信される SOAP メッセージに対し、メッセージレベルのセキュリティをサポートします。通常、これらのプロトコルで提供される転送レベルのセキュリティに加えて、メッセージレベルのセキュリティを使用します。転送レベル、メッセージレベル、または両方のレベルで資格を提供するように Web サービス クライアントに要求できます。両方のレベルで資格を提供するようにクライアントに要求する場合、AquaLogic Service Bus は着信認証および認可に対してメッセージレベルの資格を使用します。
メッセージレベルのセキュリティでは、プロキシ サービスまたはビジネス サービスが、保護される操作、および Web サービス クライアントが SOAP メッセージ (操作を呼び出す要求を含む) に適用する必要がある次のセキュリティ対策を指定します。
これらのセキュリティ対策のすべてで、SOAP メッセージのセキュリティ トークンをコード化することがクライアントに要求されます。プロキシ サービスまたはビジネス サービスは、SOAP メッセージでのコード化を要求するセキュリティ トークンのタイプを指定します。
AquaLogic Service Bus では、次の WS-Security トークン プロファイルがサポートされます。
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0.pdf
)http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0.pdf
) http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.0.pdf
)
メッセージレベルのセキュリティを要求するプロキシ サービスに SOAP メッセージを送信するために、Web サービス クライアントは SOAP ヘッダを生成し、そのヘッダを SOAP メッセージ エンベロープに追加します。そのヘッダには、デジタル署名、セキュリティ トークン、および他の構成要素が含まれます。プロキシ サービスは、保護されたエンベロープを処理するときに、メッセージを復号化して、セキュリティ ヘッダを削除します。次に、メッセージがセキュリティ要件に準拠していることを確認します。たとえば、必要なメッセージ部分が署名または暗号化 (またはその両方) されているかどうか、また必要なトークンが必要なクレームと共に存在するかどうかをプロキシ サービスが確認します。
プロキシ サービスからクライアントへの応答では、プロセス全体が逆方向に繰り返されます。
WS-Security (メッセージレベルのセキュリティを定義する OASIS 標準) の詳細については、『Web Services Security: SOAP Message Security 1.0 (WS-Security 2004)』を参照してください。URL は次のとおりです。http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf
メッセージの整合性とメッセージの機密性によってメッセージが仲介で参照または改ざんされていないことが保証され、メッセージ認証によってクライアントは既知のユーザであるという立証を要求されますが、これはどの既知のユーザがプロキシ サービス操作を呼び出すことを許可 (認可) されているかを指定するものではありません。
認可されたユーザにアクセスを制限するには、AquaLogic Service Bus Console を使用してメッセージレベルのアクセス制御ポリシーを作成します。これらのポリシーにより、認可されたユーザの特定のリストにマップできるトークンが含まれる SOAP メッセージのみをプロキシ サービスで処理できます。
着信メッセージレベルのセキュリティ用に次のいずれかの方法をサポートするように、プロキシ サービスをコンフィグレーションできます。
プロキシ サービスは、クライアントの SOAP メッセージのヘッダを処理し、そのメッセージに対してメッセージレベルのアクセス制御ポリシーを強制します。
たとえば、クライアントは SOAP メッセージを暗号化して署名し、そのメッセージをプロキシ サービスに送信します。プロキシ サービスはメッセージを復号化してデジタル署名を確認してから、メッセージをルーティングします。プロキシ サービスは、応答をクライアントに返す前に、メッセージに署名して暗号化します。クライアントはメッセージを復号化し、プロキシ サービスのデジタル署名を確認します。
プロキシ サービスは、クライアントの SOAP メッセージのヘッダを処理する代わりに、メッセージをそのままビジネス サービスに渡します。プロキシ サービスは SOAP メッセージの保護されたセクションを処理しませんが、ヘッダの値に基づいてメッセージをルーティングできます。ビジネス サービスは、メッセージを受け取ると、セキュリティ ヘッダを処理し、要求に応答します。ビジネス サービスは Web サービス ポリシー (WS-Policy) フレームワークを使用して、メッセージレベルのセキュリティで保護されている操作を記述する必要があります。ビジネス サービスは応答をプロキシ サービスに送信し、プロキシ サービスは応答をそのままクライアントに渡します。
たとえば、クライアントはメッセージを暗号化して署名し、そのメッセージをプロキシ サービスに送信します。プロキシ サービスはメッセージの復号化、またはデジタル署名の確認を行いません。単にメッセージをビジネス サービスにルーティングします。ビジネス サービスはメッセージを復号化してデジタル署名を確認してから、要求を処理します。応答パスは同様です。
アクティブな仲介として動作するようにプロキシ サービスを作成するには
WS-Policy ステートメントは、メッセージレベルのセキュリティ要件 (アサーション) を表す XML ステートメントです。たとえば、ある WS-Policy ステートメントに、クライアントにデジタル署名を要求するアサーションを含めることができます。AquaLogic Service Bus には、使用できる一連の WS-Policy ステートメントがあります。
AquaLogic Service Bus WS-Policy ステートメントがセキュリティのニーズを満たしていない場合は、自分で書いた WS-Policy ステートメント (カスタム WS-Policy ステートメント) を AquaLogic Service Bus WS-Policy リポジトリにインポートできます。
「Web サービス ポリシーを使用した着信メッセージレベルのセキュリティの指定」を参照してください。
『AquaLogic Service Bus Console の使い方』の「WSDL」にある「WSDL の追加」を参照してください。
__SERVICE_BUS_INBOUND_WEB_SERVICE_SECURITY_MBEAN__
という Web サービス セキュリティ コンフィグレーションを行う。「WebLogic Security フレームワークのコンフィグレーション : 主な手順」の手順 2 を参照してください。
「発信メッセージレベルのセキュリティのコンフィグレーション : 主な手順」を参照してください。
クライアントの SOAP メッセージが呼び出しを要求する操作に基づいてビジネス サービスにルーティングする場合は、SOAP 本体のアルゴリズム以外の操作選択アルゴリズムを指定するようにルーティングをコンフィグレーションする必要があります。プロキシ サービス パイプラインのアクションによって、署名または暗号化された WS-Security ヘッダまたは SOAP エンベロープの部分が変更されないことを確認します。デジタル署名されたクリアテキストのメッセージ部分を変更すると、ほとんどの場合、デジタル署名は壊れます。これは、後で署名を検証できないためです。
『AquaLogic Service Bus Console の使い方』の「プロキシ サービス」を参照してください。
発信メッセージレベルのセキュリティは、AquaLogic Service Bus プロキシ サービスと SOAP-HTTP ビジネス サービス間のメッセージ、または AquaLogic Service Bus プロキシ サービスと SOAP-JMS ビジネス サービス間のメッセージに適用されます。また、このセキュリティは要求と応答の両方に適用されます。
SOAP-HTTP または SOAP-JMS Web サービスを表すビジネス サービスに対して発信メッセージレベルのセキュリティをコンフィグレーションするには
『AquaLogic Service Bus Console の使い方』の「WSDL」にある「WSDL の追加」を参照してください。
WSDL ドキュメントは、1 つまたは複数の Web サービス ポリシー (WS-Policy) ステートメントでメッセージレベルのセキュリティ要件を表す必要があります。Web サービスでデジタル暗号化が必要な場合は、暗号化証明書を埋め込んだカスタム WS-Policy ステートメントを作成する必要があります。また、この WS-Policy ステートメントを Web サービスの WSDL ドキュメントに入れる必要があります (参照として含めることはできません)。
注意 : | 暗号化されるバックエンドの応答メッセージ : ビジネス サービスの応答ポリシーで暗号化を指定する場合、プロキシ サービスは要求時に暗号化証明書をビジネス サービスに送信します。ビジネス サービスは、プロキシ サービスの公開鍵を使用して応答を暗号化します。プロキシ サービスの暗号化資格は、ビジネス サービスの暗号化資格と異なることが必要です。 |
『AquaLogic Service Bus Console の使い方』の「ビジネス サービス」を参照してください。
「アクティブな仲介プロキシ サービスの作成 : 主な手順」または「パススルー プロキシ サービスの作成 : 主な手順」を参照してください。
使用頻度の少ない設計パターンには、プロキシ サービスによる発信 WS-Security SOAP エンベロープの自動生成が回避され、XQuery 式を使用してエンベロープを作成できるものがあります。この設計パターンを使用する場合、プロキシ サービスによる発信 WS-Security SOAP エンベロープの自動生成を回避するには、プロキシ サービスのメッセージ フローに $outbound
メッセージ コンテキスト変数の ./ctx:security/ctx:doOutboundWss
要素の値を xs:boolean("false")
に設定するアクションを作成する必要があります。このアクションは、次のいずれかの場所で作成できます。
$outbound
メッセージ コンテキスト変数については、AquaLogic Service Bus のユーザーズ ガイドの「メッセージ コンテキスト」を参照してください。
状況によっては、発信メッセージレベルのセキュリティを無効にしてプロキシ サービスを作成または変更したセッションをアクティブ化しようとすると、AquaLogic Service Bus Console に検証エラーが表示されます (エラーのあるセッションはコミットできません)。発信メッセージレベルのセキュリティを無効にしているためにセッションの検証エラーが表示される場合は、AquaLogic Service Bus の起動コマンドを変更して、次のシステム プロパティを true
に設定します。com.bea.wli.sb.security.wss.LaxOutboundWssValidation
次に、AquaLogic Service Bus を再起動します。このプロパティを true
に設定すると、AquaLogic Service Bus Console にはエラーではなく警告が表示されます (警告メッセージが表示されるセッションはコミットできます)。
AquaLogic Service Bus の今後のリリースで、発信メッセージレベルのセキュリティの無効化を容易にする方法が提供される予定です。
![]() ![]() ![]() |