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

时间:2009-07-29 13:39:43

标签: wcf wcf-security wcf-client

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

1 个答案:

答案 0 :(得分:0)

如果要将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安全性 - 它更容易设置和使用,更可靠和安全。但它只能在公司内部,企业防火墙内部使用。

马克