我正在使用壁垒来保护来自 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)
这再次让我想到,一个人只能使用一个安全绑定,如果有更多,则根据上面的代码优先选择一个。