加密方法
对于请求生成者绑定设置,加密方法包括指定用来对 SOAP 消息进行加密的数据和密钥加密算法。用于加密的 WSS API (WSSEncryption) 指定数据和密钥加密方法的算法名称和相匹配的算法统一资源标识 (URI)。如果指定了数据和密钥加密算法,那么将仅接受使用这些算法加密的元素。
数据加密算法
数据加密算法用来对 SOAP 消息的各个部件(包括主体和签名)进行加密。数据加密算法指定每种类型的数据加密算法的算法统一资源标识 (URI)。
数据加密算法名称 | 算法 URI |
---|---|
WSSEncryption.AES128(缺省值) | 数据加密算法 AES 128 的 URI:http://www.w3.org/2001/04/xmlenc#aes128-cbc |
WSSEncryption.AES192 | 数据加密算法 AES 192 的 URI:http://www.w3.org/2001/04/xmlenc#aes192-cbc |
WSSEncryption.AES256 | 数据加密算法 AES 256 的 URI:http://www.w3.org/2001/04/xmlenc#aes256-cbc |
WSSEncryption.TRIPLE_DES | 数据加密算法三重 DES 的 URI:http://www.w3.org/2001/04/xmlenc#tripledes-cbc |
缺省情况下,Java™ 密码术扩展 (JCE) 与强度受限或有限的密码一起提供。要使用 192 位和 256 位高级加密标准 (AES) 加密算法,必须应用无限制的权限策略文件。
对于 AES256-cbc 和 AES192-CBC 算法,必须从以下 Web 站点下载不受限制的 Java™ 密码术扩展 (JCE) 策略文件:http://www.ibm.com/developerworks/java/jdk/security/index.html。
为在生成器端进行加密而配置的数据加密算法必须与为使用者端进行解密而配置的数据加密算法相匹配。
密钥加密算法
此算法用于对密钥进行加密和解密。此密钥信息用于指定生成用于数字签名和加密的密钥所需要的配置。签署信息和加密信息配置可以共享密钥 信息。使用者端的密钥信息用于指定密钥的信息,该密钥用于在接收的消息中验证数字签名或用于解密加密的消息部件。为客户机配置请求生成者。
密钥加密算法指定密钥加密方法的算法统一资源标识 (URI)。支持下列预配置的密钥加密算法:
WSS API | URI |
---|---|
WSSEncryption.KW_AES128 | 密钥加密算法密钥合并 AES 128 的 URI:http://www.w3.org/2001/04/xmlenc#kw-aes128 |
WSSEncryption.KW_AES192 | 密钥加密算法密钥合并 AES 192 的 URI:http://www.w3.org/2001/04/xmlenc#kw-aes192 限制: 如果要让所配置的应用程序与基本安全概要文件 (BSP) 一致,请不要使用 192 位密钥加密算法。
|
WSSEncryption.KW_AES256 | 密钥加密算法密钥合并 AES 256 的 URI:http://www.w3.org/2001/04/xmlenc#kw-aes256 |
WSSEncryption.KW_RSA_OAEP(缺省值) | 密钥加密算法密钥合并 RSA OAEP 的 URI:http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p |
WSSEncryption.KW_RSA15 | 密钥加密算法密钥合并 RSA 1.5 的 URI:http://www.w3.org/2001/04/xmlenc#rsa-1_5 |
WSSEncryption.KW_TRIPLE_DES | 密钥加密算法密钥合并三重 DES 的 URI:http://www.w3.org/2001/04/xmlenc#kw-tripledes |
- algorithmName
- keyLength
- http://www.w3.org/2001/04/xmlenc#sha256
- http://www.w3.org/2001/04/xmlenc#sha512
缺省情况下,RSA-OAEP 算法使用空字符串来作为 OAEPParams 的可选编码八位元字符串。可通过指定密钥加密算法属性来提供显式的编码八位元字符串。对于属性名,可以指定 com.ibm.wsspi.wssecurity.enc.rsaoaep.OAEPparams。属性值是八位元字符串的基本 64 位编码值。
要获取 KW-AES256 和 KW-AES192 密钥加密算法,必须从以下 Web 站点下载非受限 JCE 策略文件:http://www.ibm.com/developerworks/java/jdk/security/index.html。
生成器的密钥加密算法必须与为使用者配置的密钥解密算法相匹配。
此示例提供了对数据加密方法使用三重 DES 的加密以及对密钥加密方法使用 RSA1.5 的代码:
// 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(
"",
"enc-sender.jceks",
"jceks",
"storepass".toCharArray(),
"bob",
null,
"CN=Bob, O=IBM, C=US",
null);
// generate the security token used to the encryption
SecurityToken token = factory.newSecurityToken(X509Token.class,
callbackHandler);
// generate WSSEncryption instance to encrypt the SOAP body content
WSSEncryption enc = factory.newWSSEncryption(token);
enc.addEncryptPart(WSSEncryption.BODY_CONTENT);
// set the data encryption method
// DEFAULT: WSSEncryption.AES128
enc.setEncryptionMethod(WSSEncryption.TRIPLE_DES);
// set the key encryption method
// DEFAULT: WSSEncryption.KW_RSA_OAEP
enc.setEncryptionMethod(WSSEncryption.KW_RSA15);
// add the WSSEncryption to the WSSGenerationContext
gencont.add(enc);
// generate the WS-Security header
gencont.process(msgcontext);