【问题标题】:WCF Java clients and IncludeTimestampWCF Java 客户端和 IncludeTimestamp
【发布时间】:2012-12-08 06:02:06
【问题描述】:

所以最近我们向 Java 客户端公开了一项服务。我们的服务利用传输安全以及用户名/密码验证。

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

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

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

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

创建自定义绑定时,必须将 IncludeTimestamp 设置为 真的。否则,如果 IncludeTimestamp 设置为 false,则客户端 正在使用基于非对称密钥的令牌,例如 X509 证书, 邮件不会被签名。

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

【问题讨论】:

  • 不同服务工具包之间有很多差异,我不确定最佳实践是什么。我发现消息中带有用户名或带有基本身份验证的 HTTPS 与大多数工具包兼容。即便如此,就像您发现的那样,WCF 在限制性更强的方面犯了错误,而 Java 工具包则更加宽松。 WCF 不断向自定义绑定添加更多标志来解决这些问题。

标签: java wcf security


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多