从WCF创建的ws-security标头中删除timestamp元素

我正在使用来自WCF的旧Java Web服务,该服务需要以下forms的请求:

    username password     ...   

使用以下配置hack“工作”但我不希望在config中公开用户名和密码:

      ...     username password     

我想要使​​用的是以下内容:

       

但是这会在安全元素中生成timestamp元素,java webservice将其置于其中。

我需要做的是从它生成的XML中删除时间戳,或者为我做一些自定义绑定。

我尝试创建自定义凭据,但这只更改了usernameToken元素。

我已经看过许多很多SO问题(许多来自2007年及之前的问题),其中包括以下内容并没有任何乐趣:

  • 从安全性中删除Timestamp元素
  • 如何使WCF客户端符合特定的WS-Security

删除timestamp元素的最佳,最简单和最优雅的方法是什么。

提前致谢

在Kristian Kristensen的博客文章中找到了关于他在集成到Java AXIS 1.X和WSS4J Web服务方面的困境的答案。 。 比我之前尝试的黑客更简单,更容易。

您可以使用App.config中的简单自定义绑定解决此问题,如下所示:

BUGFIX – 以前的版本中有一个错误 – 忘了在httpTransport中添加证书

                 

这提供了正确的SOAP ws-security标头,没有时间戳,只是通过调用此代码使Java服务器混乱

 var client = new [clientType](); client.ClientCredentials.ClientCertificate.Certificate = [certificate]; client.ClientCredentials.UserName.UserName = [UserName]; client.ClientCredentials.UserName.Password = [Password]; System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; // TODO wrap in try catch client.Open(); var result = client.[action](new [RequestType] { ... }); 

进一步阅读:

  • 要回答的链接来源 – Kjell-SverreJerijærvi的博客
  • 在哪里我找到了实际的答案 – 克里斯蒂安克里斯滕森的博客