IBM DataPower 3.7.1.x与WCF客户端有关

时间:2011-03-31 17:16:32

标签: wcf interop ws-security x509 ibm-datapower

我正在尝试在WCF中使用IBM DataPower 3.7.1.x Web服务,收到以下错误消息:

找不到'System.IdentityModel.Tokens.X509SecurityToken'令牌类型的令牌验证器。根据当前的安全设置,不能接受该类型的令牌。

HTTP响应返回200,我可以在Fiddler中调试时看到正确的SOAP响应。

但是,WCF客户端似乎不知道如何处理SOAP响应中的BinarySecurityToken元素。

这是我的WCF配置:

  <bindings>
    <basicHttpBinding>
      <binding name="TestBinding">
        <security mode="TransportWithMessageCredential">
          <message clientCredentialType="Certificate" />
        </security>
      </binding>
    </basicHttpBinding>
  </bindings>

  <behaviors>
    <endpointBehaviors>
      <behavior name="TestBehavior">
        <callbackDebug includeExceptionDetailInFaults="true" />
        <clientCredentials>
          <clientCertificate storeLocation="LocalMachine" 
                             storeName="My" 
                             x509FindType="FindBySubjectName" 
                             findValue="test-cert"  />
          <serviceCertificate>
            <authentication certificateValidationMode ="PeerOrChainTrust" />
          </serviceCertificate>
        </clientCredentials>
      </behavior>
    </endpointBehaviors>
  </behaviors>

  <client>
     <endpoint  address="https://serviceURL"
                binding="basicHttpBinding"
                bindingConfiguration="TestBinding"
                behaviorConfiguration="TestBehavior"
                contract="ContraceGoesHere"
                name="ContraceNameGoesHere" />
  </client>

我见过其他人向Microsoft和IBM报告类似的问题,并且有一些关于它的StackOverflow问题,但是我没有找到一个有效的解决方案。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:3)

请发布您发送的肥皂,回复的肥皂和您的配置。

也尝试添加此属性:

<security allowSerializedSigningTokenOnReply="true" />

(如here所述)

答案 1 :(得分:2)

如何从Binding转换为Custom Binding:

http://webservices20.cloudapp.net/default.aspx