java - 在 rampart 中不可能同时具有传输级安全性和消息级安全性吗?为什么?

标签 java web-services ssl ws-security rampart

我正在使用 rampart 来保护来自网络服务客户端的通信。

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

结果是我的客户端能够通过 SSL 连接到网络服务,但在发送的消息中没有签名 - 似乎忽略了非对称绑定(bind)断言。

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

查看 rampart 的 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)

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

最佳答案

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

关于java - 在 rampart 中不可能同时具有传输级安全性和消息级安全性吗?为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18398497/

相关文章:

java - 如何从我的 Java Web 服务访问 .properties 文件

SSL 证书上下文 - 如何使用 NPAPI 获取它

python - 使用 python 从 Windows 商店访问特定证书

macos - 如何使用 OS X 的 "security add-trusted-cert"命令为证书指定策略约束? (用于 SSL 网络套接字连接)

java - 无法从 wsdl 文件生成 java 代码

c# - Web 服务性能/吞吐量的异步方法

java - 为什么这个 do while 循环无限运行?

java - 如何使用Sqlite数据库在java中的两个日期之间进行搜索

java - SpringBoot 不处理 org.hibernate.exception.ConstraintViolationException

Java:使枚举绑定(bind)到不同的字符串值