如何在使用WCF web服务时对客户端进行身份验证?

如何在使用WCF web服务时对客户端进行身份验证?,wcf,wcf-security,wcf-client,Wcf,Wcf Security,Wcf Client,我想在使用Web服务时对客户端进行身份验证。我在客户端中看到一个名为ClientCredential的属性,我们可以在其中传递用户名和密码。如何将此信息传递到我的WCF web服务,以及如何验证用户ID和密码?如果您希望使用带有用户名/密码的ClientCredential,则需要在客户端app.config中进行如下配置-使用传输或消息安全性,以适合您的为准,然后指定 <system.serviceModel> <bindings> <basi

我想在使用Web服务时对客户端进行身份验证。我在客户端中看到一个名为ClientCredential的属性,我们可以在其中传递用户名和密码。如何将此信息传递到我的WCF web服务,以及如何验证用户ID和密码?

如果您希望使用带有用户名/密码的ClientCredential,则需要在客户端app.config中进行如下配置-使用传输或消息安全性,以适合您的为准,然后指定

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="UserNameSecurity">
          <security mode="Message">
            <message clientCredentialType="UserName"/>
          </security>
        </binding>
      </basicHttpBinding>
然后,您需要在客户端的端点中使用此绑定配置UserNameSecurity:

    <client>
      <endpoint address="http://localhost:8888/MyService"
                binding="basicHttpBinding" bindingConfiguration="UserNameSecurity"
                contract="IMyService" />
在服务器端,您需要定义如何验证用户-使用Windows Active Directory域,或使用ASP.NET成员资格提供程序及其关联的用户数据库:

  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="Default">
          <serviceCredentials>
            <userNameAuthentication userNamePasswordValidationMode="MembershipProvider"/>
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
    </behaviors>
在这种情况下,将根据ASP.NET成员数据库检查您的用户名/密码

如果这一切都是在公司内部的内部网上进行的,那么我宁愿在所有方面都使用集成的Windows安全性—它更易于安装和使用,而且更可靠、更安全。但它只在公司内部,在公司防火墙内部起作用

马克