【问题标题】:Is it impossible to have both transport level security and message level security in rampart? Why?壁垒中是否不可能同时具有传输级安全性和消息级安全性?为什么?
【发布时间】:2013-08-23 08:41:33
【问题描述】:

我正在使用壁垒来保护来自 Web 服务客户端的通信。

按照规范,我定义了一个非对称绑定断言来提供消息级别的安全性,但我也希望通过 SSL 与 web 服务进行通信,因此我还定义了一个适当的传输绑定断言。

效果是我的客户端能够通过 SSL 连接到 web 服务,但在发送的消息中,没有签名 - 好像忽略了非对称绑定断言。

真的是这样吗?如果是这样 - 这是壁垒中的错误,还是 WS 安全策略规范以某种方式禁止它(我还没有找到任何此类信息)?

查看壁垒的 MessageBuilder 类源,我发现了这个:

if(rpd.isTransportBinding()) {
   log.debug("Building transport binding");
   TransportBindingBuilder building = new TransportBindingBuilder();
   building.build(rmd);
} else if(rpd.isSymmetricBinding()) {
   log.debug("Building SymmetricBinding");
   SymmetricBindingBuilder builder = new SymmetricBindingBuilder();
   builder.build(rmd);
} else {
   AsymmetricBindingBuilder builder = new AsymmetricBindingBuilder();
   builder.build(rmd);
}

(全码:http://grepcode.com/file/repo1.maven.org/maven2/org.apache.rampart/rampart-core/1.6.2/org/apache/rampart/MessageBuilder.java

这又让我想到,一个人只能使用一个安全绑定,如果有更多,则根据上面的代码优先选择一个。

【问题讨论】:

    标签: java web-services ssl ws-security rampart


    【解决方案1】:

    我也同意规范没有说明我们是否可以使用多个绑定的观点(但可能我们都错过了它)。但是您仍然可以对 HTTPS 端点使用非对称绑定。

    【讨论】:

      【解决方案2】:

      最后我想我已经解决了我的问题。

      最初我认为,客户端需要在其策略中包含传输绑定声明,以便通过 SSL 与 Web 服务进行通信。我还认为,如果没有这样的断言 ramp:sslConfig 语句将被忽略。

      事实是,您不需要传输绑定断言来可能通过 SSL 进行通信,您需要它们来使其必需。如果您的客户端策略中没有此类断言,但端点需要 SSL 连接,客户端仍会尝试建立它,如有必要,请查找策略的 ramp:sslConfig 标记中配置的 javax.net.ssl.trustStorejavax.net.ssl.trustStorePassword 变量,或以其他方式(通过 JVM 参数或以编程方式)。

      所以在我的情况下,解决方案是保持非对称绑定断言不变,只配置 trustStore,而不添加任何传输绑定断言。

      我仍然不清楚为什么壁垒不让你在一个策略中使用这两种断言。

      【讨论】:

        猜你喜欢
        • 2011-06-17
        • 2014-05-22
        • 2011-08-27
        • 2013-02-05
        • 1970-01-01
        • 2011-05-15
        • 2019-04-30
        • 2011-10-20
        • 2010-10-04
        相关资源
        最近更新 更多