如何在传出的SOAP消息上应用XML签名

时间:2010-08-17 15:44:28

标签: java xml soap cxf xml-signature

我使用cxf codegen生成了存根和绑定。一切运行正常,但由于安全问题,服务器仍拒绝该消息。基本上我有3层需要注意,所有这些都需要证书(我有)。

  1. 管道上的SSL加密
  2. 特定数据元素的证书签名
  3. 有效负载数据上的证书XML签名。
  4. 为了使汤更有趣,我对实际的签名和证书没有完全的控制权。基本上我必须提取正确的数据,将其发送给签名,我必须在事务中重新注入已签名的数据。

    我有权访问的证书位于本地计算机的Windows证书存储区(SSL和某些签名)

    阅读文档框架似乎很大程度上依赖于配置伏都教魔法。不幸的是,我发现的大部分链接都花了很多时间详细解释如何生成证书,但我们对如何实际使用它们感到吝啬。

    使用CXF我该如何实现?

    如何访问正确的挂钩以及我可以在消息上注入签名的代码?

    由于

1 个答案:

答案 0 :(得分:2)

原来,CXF具备从一开始就生成适当签名的能力。我们的问题是签名的接收端不接受此标准签名。我们必须创建一个自定义签名系统,以确保服务器的不良实现所需的所有挑剔和深奥的人力资源。无论事务的名称空间声明如何,都必须将名称空间前缀设置为非常特定的值。有时候空白区域有时候不得修剪......

因此我们创建了一个拦截器并将其注入到拦截器列表中,就是这样。实际上它有点复杂,因为他们坚持使用最终用户的USB密钥上的证书签署soap事务。我们的系统集中了所有接口,因此我们不得不进一步调整以使其工作,但最终一切都很好。

我虽然使用标准的目的是提供一个标准的做法,好吧......有些人似乎认为他们比创建标准的专家更好的专家,并坚持添加他们自己的泡菜罐。有人应该告诉他们在覆盆子果酱中添加泡菜不会让它味道更好。