我们编写了一个Web服务的WCF(4.0)客户端,其WSDL包含以下安全策略
<wsp:UsingPolicy wssutil:Required="true"/>
<wsp:Policy wssutil:Id="UsernameTokenPolicy">
<sp:SupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken10/>
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SupportingTokens>
</wsp:Policy>
我们的邮件中的标头包含<nonce>
标记。我们没有必要明确地编写代码来执行此操作 - 看起来.NET库会自动生成一个nonce值并添加它。
问题是我们正在谈论的服务器已被更改。它现在是一个JBOSS服务器(之前是WebLogic),显然,任何部署它的人都说它因为<nonce>
标记而拒绝我们的消息。
从我所看到的结果来看,JBOSS正确地处理了<nonce>
标签,所以我不确定它被拒绝的原因 - 我认为这是他们最终的配置设置。 [编辑] JBOSS严格遵循WSSE uername和Token Security Spec 1,1,它要求Nonce显式提供和EncodingType。 .NET Framework并未严格遵循此规范。
但是,我想知道有没有办法将我的WCF客户端配置为不包含<nonce>
标记?
我不希望显式地使用标头代码,因为这需要通过适当的测试等来推出补丁,并且也更容易出错。所以,我真的希望有一个客户端配置选项。