尝试让WCF客户端使用wss 1.0用户名令牌安全性

时间:2010-04-30 21:00:08

标签: wcf

我正在尝试使用WCF客户端来调用第三方Web服务。 Web服务使用用户名令牌身份验证WSS-Security 1.0 Soap Message Security

以下是Web服务所需内容的示例soap身份验证标头

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<wsse:Security soap:mustUnderstand="1">
<wsse:UsernameToken namespaces>
<wsse:Username>username</wsse:Username>
<wsse:Password Type="type info">password</wsse:Password>
<wsse:Nonce>nonce</wsse:Nonce>
<wsu:Created>date created</wsu:Created>
</wsse:UsernameToken>
<wsse:Security>
</soap:Header>
<soap:Body>
<WebServiceMethodName xmlns="Web Service Namespace" />

    

我按照以下方式配置客户端

<basicHttpBinding>
<binding name="Binding1">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Basic"/>
</security>
</basicHttpBinding>

但收到一条错误,指出标题中缺少nonce和datecreated属性。有谁知道如何配置WCF客户端以使用

WSS-Security 1.0肥皂消息安全用户名令牌认证?

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。我使用MessageInspector代替自定义令牌serlializer在UsernameToken方法中添加了正确的BeforeSendRequest。然后我使用自定义行为来应用修复。

我的博文demo project中记录了整个过程(Supporting the WS-I Basic Profile Password Digest in a WCF client proxy}。或者,您可以阅读PDF

如果您想跟进我的进度到解决方案,您可以在StackOverflow上找到标题为“Error in WCF client consuming Axis 2 web service with WS-Security UsernameToken PasswordDigest authentication scheme”:

答案 1 :(得分:1)

一直在看同样的问题,我的发现很遗憾,WCF不支持Nonce值。

如果要发送用户名和密码(默认包含时间戳),请将配置更改为

     <basicHttpBinding>
        <binding name="BasicHTTP">
          <!-- UsernameToken over Transport Security -->
          <security mode="TransportWithMessageCredential">
            <message clientCredentialType ="UserName" />
          </security>
        </binding>
      </basicHttpBinding>

还要注意,在WCF和WSS4J之间交换时,UserNameToken似乎是一个缺陷(至少对标准有不同的解释),请参阅http://social.msdn.microsoft.com/Forums/en/wcf/thread/6bc1b0e4-424b-4e2a-909c-815095be631f

WSSConfig.getDefaultWSConfig()setAllowNamespaceQualifiedPasswordTypes(真)。可能是WSS4J方面的解决方法。

更新:在WCF方面,你可以通过实现CustomCredential和CustomTokenSerializer参考最后一篇文章解决问题 http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/4df3354f-0627-42d9-b5fb-6e880b60f8ee

沃尔维克

相关问题