WCF Java客户端和IncludeTimestamp

Jac*_*ord 11 java security wcf

最近我们将服务暴露给Java客户端.我们的服务利用传输安全性以及用户名/密码验证.

尝试调用我们的服务时,客户端收到有关安全标头的异常.进一步的研究表明,WCF希望时间戳包含在从客户端传递的SOAP头中.如果不存在(或方差大于5分钟),则会抛出异常.

我们还发现Java客户端没有传递WCF所期望的时间戳.我们发现的唯一解决方法是实现CustomBinding并将IncludeTimestamp设置为false.这允许客户端成功调用该服务.

今天在查看WCF安全性的最佳实践时,我在MSDN上看到以下内容:

在自定义绑定上将SecurityBindingElement.IncludeTimestamp设置为True

创建自定义绑定时,必须将IncludeTimestamp设置为true.否则,如果IncludeTimestamp设置为false,并且客户端使用非对称的基于密钥的令牌(如X509证书),则不会对该消息进行签名.

所以,我的问题是在向非.NET客户端使用SSL(传输)时将WCF(以及最终的Web API)服务暴露给外部世界的最佳实践是什么?

Yar*_*veh 1

最佳实践只有在能够执行时才有效。如果您无法控制客户端,并且它们无法发送时间戳,那么请务必将 includetimestamp 设置为 false。