负责开发基于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>
你可以发布你目前的SOAP信封的样子吗?你可以使用像Fiddler这样的工具来捕捉它。 – Pete
他们对格式的要求有多紧密,因为默认格式有很大不同(例如,标签名称不同)。如果您需要确切的标签名称,那么您将需要创建自己的消息格式化程序。这里有一篇文章描述了如何:http://blogs.msdn.com/b/carlosfigueira/archive/2011/05/03/wcf-extensibility-message-formatters.aspx – Pete
如果他们的需求有一定的灵活性,那么你可能不需要那么远,但我的直觉说,这就是你需要做的。 – Pete