为客户机配置请求签名方法
使用 WSSSignature 和 WSSSignPart API 来选择签署方法。请求签署方法包括签名、规范、摘要和变换方法。
开始之前
首先,应该指定了必须使用 WSS API 或者通过管理控制台配置策略集对哪些由客户机发送的消息部件进行数字签署。
关于此任务
下表描述了此信息的用途。这些定义中的一些基于 XML 签名规范,此规范位于以下 Web 站点 http://www.w3.org/TR/xmldsig-core。
方法名称 | 描述 |
---|---|
规范化算法 | 在将信息摘要为签名操作部分前,规范 <SignedInfo> 元素。 |
签名算法 | 计算规范 <SignedInfo> 元素的签名值。为客户机请求发送方配置选择的算法必须与在服务器请求接收方配置中选择的算法匹配。 |
变换方法 | 在执行签名操作过程中将信息处理为摘要时,对要签署的部件进行变换。 |
摘要方法 | 计算已变换部件的摘要值。为客户机请求发送方配置选择的算法必须与在服务器请求接收方配置中选择的算法匹配。 |
可以使用 WSS API,或者通过管理控制台配置策略集来配置签署算法方法。如果使用的是 WSS API,请使用 WSSSignature 和 WSSSignPart API 来指定配置客户机进行请求签署时要进行数字签署的消息部件。
WSSSignature 和 WSSSignPart API 完成以下步骤来配置签名和签署部件算法方法:
过程
结果
示例
以下示例是用于指定签名信息的样本代码:指定 HMAC_SHA1 作为签名方法、指定 C14N 作为规范方法、指定 SHA256 作为摘要方法以及指定 EXC_C14N 和 TRANSFORM_STRT10 作为变换方法:
// get the message context
Object msgcontext = getMessageContext();
// generate WSSFactory instance
WSSFactory factory = WSSFactory.getInstance();
// generate WSSGenerationContext instance
WSSGenerationContext gencont = factory.newWSSGenerationContext();
// generate callback handler
X509GenerateCallbackHandler callbackHandler = new X509GenerateCallbackHandler(
"",
"dsig-sender.ks",
"jks",
"client".toCharArray(),
"soaprequester",
"client".toCharArray(),
"CN=SOAPRequester, OU=TRL, O=IBM, ST=Kanagawa, C=JP",
null);
//generate the security token used to the signature
SecurityToken token = factory.newSecurityToken(X509Token.class, callbackHandler);
//generate WSSSignature instance
WSSSignature sig = factory.newWSSSignature(token);
//set the canonicalization method
// DEFAULT: WSSSignature.EXC_C14N
sig.setCanonicalizationMethod(WSSSignature.C14N);
//set the signature method
// DEFAULT: WSSSignature.RSA_SHA1
sig.setSignatureMethod(WSSSignature.HMAC_SHA1);
//set the part specified by WSSSignPart
WSSSignPart sigPart = factory.newWSSSignPart();
//set the digest method
// DEFAULT: WSSSignPart.SHA1
sigPart.setDigestMethod(WSSSignPart.SHA256);
//add the transform method
// DEFAULT: WSSSignPart.TRANSFORM_EXC_C14N
sigPart.addTransformMethod(WSSSignPart.TRANSFORM_EXC_C14N);
sigPart.addTransformMethod(WSSSignPart.TRANSFORM_STRT10);
// add the WSSSignPart to the WSSSignature
sig.addSignPart(sigPart);
//add the WSSSignature to the WSSGenerationContext
gencont.add(sig);
//generate the WS-Security header
gencont.process(msgcontext);
下一步做什么
配置客户机对消息进行数字签署及选择算法方法后,必须配置服务器以便对请求签署验证数字签名及选择算法方法。
通过管理控制台配置策略集以便在服务器上配置签名验证信息和方法。