Web Services Secure Conversation の有効範囲の設定
Web Services Secure Conversation は 2 つの有効範囲設定メカニズムをサポートしています。デフォルトと、Java™ API for XML Web Service (JAX-WS) クライアント・サービス・レベルです。
2 つの有効範囲設定メカニズムについての以下の情報を検討して、WebSphere® Application Server 用のセキュアな会話およびポリシー・セットの適切な有効範囲設定を確認してください。
デフォルト
デフォルトの有効範囲は、クラスター、アプリケーション、モジュール、およびターゲット・サービス・エンドポイントに基づきます。 シン・クライアント環境で実行されているクライアントの場合は、単一のアプリケーション、クラスター、およびモジュールと見なされます。
この有効範囲方式では、同じターゲット・サービス・エンドポイントに対する特定のアプリケーション、クラスター、およびモジュール内の JAX-WS クライアントのすべてのインスタンスが、同じセキュアな会話を共有します。 例えば次の図では、2 つのクライアント・インスタンス (クライアント 1 およびクライアント 2) が同じモジュールにあります。クライアント 1 およびクライアント 2 は、サービス 1 と同じセキュアな会話を共有します。他の 2 つのクライアント・インスタンス (クライアント 3 およびクライアント 4) は、クライアント 1 および 2 とは別のモジュールにあり、お互いに同じセキュアな会話を共有しますが、クライアント 1 および 2 とは共有しません。
JAX-WS クライアント・サービス・レベル
JAX-WS クライアント・サービス・レベルでの有効範囲は、クライアント・アプリケーション要求 (アプリケーション・アウトバウンド) の Secure Conversation トークン (SCT) のトークン生成プログラム・バインディング構成にプロパティーを指定することにより、使用可能になります。 このバインディングはデプロイ済みアプリケーションの META-INF にあります。
$PROFILE_DIR/config/cells/<cellname>/WSSampleClientBeta.ear/deployments/WSSampleClientBeta
/META-INF/SecureConversation123binding/PolicyTypes/WSSecurity/bindings.xml.
以下に構成例を示します。
<tokenGenerator name="gen_enctgen"
classname="com.ibm.ws.wssecurity.wssapi.token.impl.CommonTokenGenerator">
<valueType localName="http://schemas.xmlsoap.org/ws/2005/02/sc/sct" uri="" />
<callbackHandler classname="com.ibm.ws.wssecurity.impl.auth.callback.WSTrustCallbackHandler">
<properties name="com.ibm.ws.wssecurity.sc.SCTScope" value="SERVICE_SCOPE"/>
</callbackHandler>
<properties name="com.ibm.ws.wssecurity.sc.dkt.ServiceLabel" value="WSC"/>
<properties name="com.ibm.ws.wssecurity.sc.dkt.ClientLabel" value="WSC"/>
<jAASConfig configName="system.wss.generate.sct"/>
</tokenGenerator>
次のコード例は、クライアント・アプリケーション要求 (アプリケーション・アウトバウンド) の SCT のトークン生成プログラム・バインディング構成でプロパティーが使用可能にされた後の振る舞いを示しています。 このモードでは、Web Services Secure Conversation の有効範囲は JAX-WS クライアント・サービス・インスタンスに設定されます。
QName serviceQname = new QName("http://ws.apache.org/axis2", "EchoService");
QName portQname = new QName("http://ws.apache.org/axis2", "EchoServicePort");
String endpointUrl = "http://myhost/......";
Service svc1 = Service.create(serviceQname);
svc1.addPort(portQname, null, endpointUrl);
Dispatch<Source> dispatch = svc1.createDispatch(portQname, Source.class, null);
……
……
Service svc2 = Service.create(serviceQname);
svc2.addPort(portQname, null, endpointUrl);
Dispatch<Source> dispatch = svc2.createDispatch(portQname, Source.class, null);
ここで、svc1 および svc2 は、ターゲット・サービス・エンドポイントを持つ 2 つの異なるセキュアな会話です。
管理コンソールを使用するか、スクリプトを使用してプロパティーを追加することにより、有効範囲を変更できます。