Web Services Secure Conversation 的范围限定
Web Services Secure Conversation 支持两种作用域限定机制:缺省机制和 Java™ API for XML Web Services (JAX-WS) 客户机服务级别。
请复审以下关于两种作用域限定机制的信息,以确保 WebSphere® Application Server 的安全对话和策略集的作用域限定正确。
缺省
缺省范围基于集群、应用程序、模块和目标服务端点。对于在瘦客户机环境中运行的客户机,将它看作单个应用程序、集群和模块。
在此范围限定方式中,同一目标服务端点中特定应用程序、集群、模块的所有 JAX-WS 客户机实例共享同一个安全对话。例如,在下图中,两个客户机实例(客户机 1 与客户机 2)在同一个模块中。客户机 1 和客户机 2 共享与服务 1 的同一个受保护对话。与客户机 1 和客户机 2 不在同一个模块上的另外两个客户机实例(客户机 3 和客户机 4)互相共享受保护对话,但不能与客户机 1 和客户机 2 共享受保护对话。
JAX-WS 客户机服务级别
通过在客户机应用程序请求(应用程序出站)的安全对话令牌 (SCT) 的令牌生成者绑定配置中指定属性,可以启用 JAX-WS 客户机服务级别的范围。该绑定位于已部署应用程序的 META-INF 中。
例如,如果应用程序为 WSSampleClientBeta.ear 并且绑定目录为
SecureConversation123binding,那么绑定文件将位于以下位置:
$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 Service 安全对话的范围限定为 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 与目标服务端点在两个不同安全对话中。
可使用管理控制台或通过使用脚本编制添加属性来更改范围。