扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:闹市孤僧 2007年5月30日
关键字:
客户端通过注册OutHandler使用server数字证书中的公钥对报文体进行加密,server数字证书不需要访问密钥,因此客户端仅需要指定访问server数字证书的必要信息即可:
代码清单19 BbtForumServiceEncClient
package com.baobaotao.xfire.wss4j.client;
…
public class BbtForumServiceEncClient {
private static XFireProxyFactory serviceFactory = new XFireProxyFactory();
public static void main(String[] args) {
Service serviceModel = new ObjectServiceFactory().create(BbtForumService.class);
try {
String serviceURL = "http://localhost:8080/baobaotao/service/BbtForumServiceEnc";
BbtForumService service =(BbtForumService) serviceFactory.create(serviceModel,
serviceURL);
Client client = ((XFireProxy)Proxy.getInvocationHandler(service)).getClient();
client.addOutHandler(new DOMOutHandler());
Properties properties = new Properties();
properties.setProperty(WSHandlerConstants.ACTION, ①设定加密动作
WSHandlerConstants.ENCRYPT);
②报文加密需要访问server数字证书,并获取其中的server公钥,
server数字证书位于密钥库中,通过属性文件提供相应的信息
properties.setProperty(WSHandlerConstants.ENC_PROP_FILE,
"com/baobaotao/xfire/wss4j/client/outsecurity_enc.properties");
③设定加密所使用的公钥用户(对应密钥库中数字证书的别名)
properties.setProperty(WSHandlerConstants.ENCRYPTION_USER, "server");
client.addOutHandler(new WSS4JOutHandler(properties));
int count = service.getRefinedTopicCount(20);
System.out.println("count:"+count);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
outsecurity_enc.properties定义了访问clientStore.jks的必要信息,包括密钥库访问密码、密钥库文件位置:
org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=storepass①密钥库访问密码
org.apache.ws.security.crypto.merlin.file=META-INF/xfire/clientStore.jks②密钥库文件位置
运行BbtForumServiceEncClient,观察加密后的SOAP请求报文,其结构如下所示:
1 <soap:Envelope>
2<soap:Header>
3<wsse:Security>
4<xenc:EncryptedKey Id="EncKeyId-4694228">
5<xenc:EncryptionMethod
6Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
7<ds:KeyInfo>
8<wsse:SecurityTokenReference>
9<ds:X509Data>
10<ds:X509IssuerSerial>
11<ds:X509IssuerName>
12CN=server
13</ds:X509IssuerName>
14<ds:X509SerialNumber>
151176124843
16</ds:X509SerialNumber>
17</ds:X509IssuerSerial>
18</ds:X509Data>
19</wsse:SecurityTokenReference>
20</ds:KeyInfo>
21<xenc:CipherData>
22<xenc:CipherValue>
23Gos2iKQS…
24</xenc:CipherValue>
25</xenc:CipherData>
26<xenc:ReferenceList>
27<xenc:DataReference URI="#EncDataId-18687346" />
28</xenc:ReferenceList>
29</xenc:EncryptedKey>
30</wsse:Security>
31</soap:Header>
32<soap:Body>
33<xenc:EncryptedData Id="EncDataId-18687346">
34<xenc:EncryptionMethod
35Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
36<xenc:CipherData>
37<xenc:CipherValue>
38CCwZvucWxtuHgMxkvEZnZ…
39</xenc:CipherValue>
40</xenc:CipherData>
41</xenc:EncryptedData>
42</soap:Body>
43 </soap:Envelope>
BbtForumServiceEncClient对SOAP加密主要完成了以下几个操作:
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者