cxfでSOAPメッセージを送信するたびにws-security情報を動的に変更/設定できるようにしたいと思います。これをどのように行うのが最善でしょうか。
詳細:実行時にキーストア名、キーストアエイリアス、パスワード、ホスト名などの設定を変更したいのですが、メッセージの送信ごとに変更することをお勧めします。現在使用しているのは、署名用のWSS4JOutInterceptorおよびWSS4JInInterceptorインターセプターを備えたjaxwsクライアントです。そして私はSSL/TLS通信のためにtlsクライアントパラメータでhttpコンジットを使用しています。jaxwsクライアントとhttpコンジットはどちらもSpringで構成され、キーストア名、エイリアス、パスワードなどの構成がSpring構成で設定されます。
オプションが表示されます:1)グローバルプロパティを介して実行時にこれらの設定を変更します。2)メッセージの送信ごとにこれらの設定を変更します(推奨)。
2)望ましいですが、最も難しいと思います。これはどのようにすればよいですか?
私は次のことを考えていました。a)jaxwsクライアント:メッセージをインターセプトする独自のインインターセプターとアウトインターセプターを作成し、そのメッセージに必要なセキュリティ設定に応じて、正しい(キャッシュされた)WSS4JOutInterceptorインターセプターを使用します。WSS4JOutInterceptorインターセプターがキャッシュに存在しない場合は、作成されます(おそらく、最大5つのWSS4JOutInterceptorインスタンスがキャッシュされています)。ただし、@ Webserviceプロキシと通信してsoapリクエスト/メッセージを作成および送信するときに、アプリの他の部分で認識されているインターセプターで必要な設定をどのように判断できますか...追加できる可能性がありますJaxWsClientProxyを介したsoapメッセージに対するある種のsecurityInfoオブジェクトですが、どのように?...または、このセキュリティ情報がまだわかっているときに、soapメッセージを送信/作成するときにインターセプターを設定できます。
b)httpコンジット:ConduitSelectorを使用します(使用したことはありませんが、検出されます)。正しいhttpコンジットを選択できますが、(a)と同じ問題があります。石鹸メッセージを作成/送信するときに知られているように「使用」し、インターセプターは後で設定されます...おそらくメッセージの送信ごとにコンジットセレクターを設定する必要があります。
最後に、上記は大きな話になります;)しかし、私はあなたがいくつかのアドバイスを与えることができることは明らかだと思いますか?