2013-01-04 121 views
3

负责开发基于Java的web服务的第三方回来给我们带来的是邮件标题需要像这样的要求:加密WCF消息密码

<soapenv:Header> 
<wsse:Security> 
    <xenc:ReferenceList> 
     <xenc:DataReference URI="#EncDataId-1"/> 
    </xenc:ReferenceList> 
    <wsse:UsernameToken> 
     <wsse:Username>[snip]</wsse:Username> 
     <xenc:EncryptedData Id="EncDataId-1" Type="http://www.w3.org/2001/04/xmlenc#Element"> 
      <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/> 
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
       <ds:KeyName>[snip]</ds:KeyName> 
      </ds:KeyInfo> 
      <xenc:CipherData> 
       <xenc:CipherValue>[snip]</xenc:CipherValue> 
      </xenc:CipherData> 
     </xenc:EncryptedData> 
    </wsse:UsernameToken> 
    </wsse:Security> 
</soapenv:Header> 

鉴于我的这个安全巫术我非常surfacish理解我无法弄清楚如何配置我的客户端来产生这样的头文件。现在我的代码如下所示:

client.ClientCredentials.UserName.UserName = "[snip]"; 
client.ClientCredentials.UserName.Password = "[snip]"; 

和标题:

<s:Header> 
    <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
     <o:UsernameToken u:Id="uuid-e906a1ca-aa63-474c-b4ac-cf9b90ab2435-1"> 
      <o:Username>[snip]</o:Username> 
      <o:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">[snip]</o:Password> 
     </o:UsernameToken> 
    </o:Security> 
</s:Header> 

和绑定:

<binding name="SMSSoap11"> 
    <security mode="TransportWithMessageCredential" /> 
</binding> 
+0

你可以发布你目前的SOAP信封的样子吗?你可以使用像Fiddler这样的工具来捕捉它。 – Pete

+0

他们对格式的要求有多紧密,因为默认格式有很大不同(例如,标签名称不同)。如果您需要确切的标签名称,那么您将需要创建自己的消息格式化程序。这里有一篇文章描述了如何:http://blogs.msdn.com/b/carlosfigueira/archive/2011/05/03/wcf-extensibility-message-formatters.aspx – Pete

+0

如果他们的需求有一定的灵活性,那么你可能不需要那么远,但我的直觉说,这就是你需要做的。 – Pete

回答

1

WCF不会产生此为你输出。你将不得不为此编写your own token,甚至更多。 WCF仅支持使用纯密码开箱即用的用户名令牌,并且您的代码示例甚至看起来不像用户名令牌规范的任何部分。如果目标是将加密密码与WS-Security一起使用,那么安全性标头看起来不完整。

您应该向Java开发人员询问WS-SecurityPolicy的安全要求是什么?

+0

我有一种感觉,情况是这样,但不能自己支持。你的回答让我有信心推回这一要求。 –