在WCF服务中使用ASP.NET成员资格提供程序验证

ryu*_*ice 17 asp.net wcf asp.net-membership wcf-security

有没有办法使用成员资格提供程序的相同用户名和密码进行WCF服务身份验证?如果是这样,它支持哪种绑定?我需要从当前调用该服务的用户中提取配置文件变量.谢谢你的帮助.

mar*_*c_s 22

基本上,任何接受用户名/密码作为消息安全性的客户端凭据的绑定都可以配置为使用ASP.NET成员资格提供程序.

查看此MSDN文档,了解如何在WCF中使用ASP.NET成员资格提供程序 - 您需要为"UserName"类型的客户端凭据配置绑定

<bindings>
  <wsHttpBinding>
  <!-- Set up a binding that uses UserName as the client credential type -->
    <binding name="MembershipBinding">
      <security mode ="Message">
        <message clientCredentialType ="UserName"/>
      </security>
    </binding>
  </wsHttpBinding>
</bindings>
Run Code Online (Sandbox Code Playgroud)

以及使用ASP.NET Membership进行用户身份验证的服务:

<serviceBehaviors>
  <behavior name="AspNetMembership">
     <serviceCredentials>
        <userNameAuthentication 
             userNamePasswordValidationMode ="MembershipProvider" 
             membershipProviderName ="SqlMembershipProvider"/>
     </serviceCredentials>
  </behavior>
</serviceBehaviors>
Run Code Online (Sandbox Code Playgroud)

当然,在配置服务时,您必须将此服务行为应用于您的服务!

<services>
   <service name="YourService" behaviorConfiguration="AspNetMembership">
   ....
   </service>
</services>
Run Code Online (Sandbox Code Playgroud)

BasicHttpBinding,wsHttpBinding,netTcpBinding支持UserName客户端凭证类型 - 所以通常都是嫌疑人.

  • 如果您使用的是用户名/密码,WCF需要安全链接 - 因此您必须使用https(因为您无法使用基于邮件的加密).并且没有:你可以绝对使用没有https的wsHttpBinding - 只要你可以加密消息,例如通过提供证书 (2认同)