4

我正在尝试在 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 问题,但是我还没有找到一个可行的解决方案。

任何帮助,将不胜感激。

4

2 回答 2

3

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

也尝试添加这个属性:

<security allowSerializedSigningTokenOnReply="true" />

(如此所述)

于 2011-03-31T18:19:59.850 回答
2

如何从绑定转换为自定义绑定:

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

于 2012-05-08T14:25:32.620 回答