Wcf IIS6中的自定义用户名/密码身份验证

Wcf IIS6中的自定义用户名/密码身份验证,wcf,iis-6,transport-security,Wcf,Iis 6,Transport Security,我有一个WCF服务,我在IIS6主持。我正在尝试使用传输级安全设置自定义用户名/密码身份验证。我已经设置了一个测试证书,并让一个客户端通过SSL进行连接,但未指定身份验证,即: <security mode="Transport"> <transport clientCredentialType="Basic" /> </security> 我已经设置了一个带有消息安全性和客户端凭据类型用户名的自定义验证器,但现在我想

我有一个WCF服务,我在IIS6主持。我正在尝试使用传输级安全设置自定义用户名/密码身份验证。我已经设置了一个测试证书,并让一个客户端通过SSL进行连接,但未指定身份验证,即:

      <security mode="Transport">
        <transport clientCredentialType="Basic" />
      </security>
我已经设置了一个带有消息安全性和客户端凭据类型用户名的自定义验证器,但现在我想将其与传输级安全性结合起来。当我设置了web.config时,当我尝试查看WSDL时,我得到一个错误: 此服务的安全设置需要“基本”身份验证,但未为承载此服务的IIS应用程序启用此身份验证

以下是my web.config的重要部分:

<system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="UserNameBinding">
          <security mode="Transport">
            <transport clientCredentialType="Basic" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="ServiceAuthenticationBehavior"
        name="Service.WebServices.MyService">
        <endpoint address="mex" binding="mexHttpsBinding" bindingConfiguration=""
          name="mexBinding" contract="IMetadataExchange" />
        <endpoint binding="wsHttpBinding" bindingConfiguration="UserNameBinding"
          name="wsHttpBindingWithAuth" contract="Service.WebServices.IMyService" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceAuthenticationBehavior">
          <serviceMetadata httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <serviceCredentials>
            <serviceCertificate findValue="TestCert01" storeLocation="LocalMachine"
              storeName="TrustedPeople" x509FindType="FindBySubjectName" />
            <userNameAuthentication userNamePasswordValidationMode="Custom"
              customUserNamePasswordValidatorType="Service.WebServices.ClientCredentialsValidator, Service.WebServices" />
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
    </behaviors>
我应该在IIS6中设置什么来启用它吗?
在IIS中,我最初启用了启用匿名访问选项。我还尝试启用了“明文发送密码”复选框中的基本身份验证,但没有成功。

这篇文章似乎表明,基本身份验证仅适用于Windows帐户,并提供了第三方解决方案

我自己也来过这里,最后使用了一条腿的openauth,效果很好

编辑 这篇文章让我找到了解决办法


值得一提的是1腿和2腿OAuth之间的差异。1-leg是客户机和服务都知道客户机帐户名的客户机秘密密码的地方,该密码用于加密和解密所有添加到查询字符串中的身份验证请求。对于双腿,这是由第三方(如谷歌、facebook等)生成的。

您是否一起尝试过一个on[off]&一个basic[on]?做这样的事你永远不知道iisreset是否有用所以我还是做了一个你能描述一下单腿openauth吗?不知道这是什么。听起来像是我用消息级安全性进行的自定义身份验证不起作用。我想我可以做传输+消息安全,匿名SSL,但是像我以前做的那样在消息传输上进行自定义身份验证?这个链接意味着您可以使用SSL进行自定义用户/传递身份验证。无法让它工作,虽然与上述问题。