大致看一下这段SOAP消息的含义:
a) xenc:EncryptedKey元素中是经过加密处理后UsernameToken中的用户密码,使用服务器端X.509证书的公匙加密。
b) 接下来可以看到有两个wssc:DerivedKeyToken元素,这是生成的两个派生密匙,关于派生密匙可以参考
Web服务安全对话语言 。
wssc:DerivedKeyToken/wsse:SecurityTokenReference/wsse:Reference元素的URI属性值是xenc:EncryptedKey的id,表明它对xenc:EncryptedKey元素的引用,从这个引用可以知道是从哪个密匙派生而来。通过URI属性引用其它资源,如果以符号#开始,表明是引用当前xml文档中id、wsu:id值相对应的元素。
c) xenc:EncryptedData元素。从xenc:EncryptedData元素的type属性可以看出它是对原SOAP消息中的一个xml元素进行了加密,是哪一个元素呢,就是类似步骤2中的那个wsse:UsernameToken元素,它包含用户名等安全认证信息。通过xenc:EncryptedData/KeyInfo里面的引用信息可以知道,这个元素是使用派生密匙1加密的。
d) Signature元素。可以参考:
XML Signature。
从Signature/KeyInfo中的引用信息可以知道,使用了派生密码2进行签名。通过Signature/SignedInfo中的Reference列表可以知道,SOAP消息中的哪些元素被用来签名了。在前面完整的SOAP消息中你可能会发现,第一个Reference元素URI属性所指向的id在文档中不存在。在c)中提到xenc:EncryptedData元素对原SOAP文档的一个元素进行了加密,这个元素的id应当就是被第一个Reference引用的。
4. 在WS-Security 1.1扩展中选择Sign and Encrypt选项(UsernameForCertificateAssertion)。
在这个配置中,soap:Header和步骤3 Sign-Only配置时基本一样,区别是,步骤3的配置中soap:Body没有被加密,而选择Sign and Encrypt选项后soap:Body也是被加密的。如果基于步骤3的SOAP消息来看,soap:Body使用的派生密匙1进行加密。
soap:Body的xml如下:
这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己。
出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有。有报错要看日志。下面简单罗列下常见的问题,大多文档上都有提到的。
1、repeated column width is largerthan paper width:
这个看这段话应该是很好理解的。比如做的模板页面宽度只能放
这个问题我实在是为整个 springsource 的员工蒙羞
如果大家使用 spring 控制事务,使用 Open Session In View 模式,
com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.
简单模拟实现数据库连接池
实例1:
package com.bijian.thread;
public class DB {
//private static final int MAX_COUNT = 10;
private static final DB instance = new DB();
private int count = 0;
private i
using System;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
namespace WindowsFormsApplication1
{
Configuring Spring and JTA without full Java EE
http://spring.io/blog/2011/08/15/configuring-spring-and-jta-without-full-java-ee/
Spring doc -Transaction Management
http://docs.spring.io/spri