使用WCF进行身份验证

时间:2012-04-17 12:20:17

标签: c# wcf wcf-security

我有一个WCF应用程序,我想向某些人公开,但是为了让他们使用我想以某种方式验证它们的服务,是否可以创建我自己的成员资格提供程序来检查用户是否通过调用ValidateUser方法验证?另外,我如何告诉我的绑定/行为使用此会员提供商?

修改

我对此也有一些疑问。例如:如果我从我的客户端调用名为QueryStock的webservice上的方法。是否首先使用我的成员资格提供程序验证用户在解雇方法之前,还是必须将用户名和密码作为参数传递,然后在我的方法中执行代码之前执行Membership.ValidateUser(username, password)

4 个答案:

答案 0 :(得分:0)

是的,这是可能的。查看 this 文章,它会显示使用自定义提供程序的示例。

答案 1 :(得分:0)

这一切都与WCF有关,我现在正在使用它来获得我们的WCF服务。

您可以创建自己的成员资格提供程序(就像您为asp.net应用程序所做的那样),然后将其连接到WCF中。如果你谷歌为“WCF会员提供者”,有大量的信息。这篇文章也可以帮到你:WCF Authentication using SQL Membership Provider

答案 2 :(得分:0)

您需要在配置中定义行为,例如:

<behaviors>
  <serviceBehaviors>
    <behavior name="Framework.Services.FrameworkBehaviour">
      ...
      <serviceAuthorization principalPermissionMode="UseAspNetRoles" roleProviderName="CustomProvider" />
      <serviceCredentials>
        <serviceCertificate ... />
        <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="...." />
      </serviceCredentials>
    </behavior>

这是绑定代码段:

   <binding name="userNamePassOverSsl" ...>
      <security mode="TransportWithMessageCredential">
        <transport  />
        <message clientCredentialType="UserName" />
      </security>
    </binding>

答案 3 :(得分:0)

我也有这个问题: Authentication in WCF for every call

如您所见,您可以使用ASP.NET身份验证。

如果您有自己的方法来验证用户,我会尝试使用一种外观来使用用户+令牌调用每个服务方法,并保留一种“异步会话”。

因此,您可以在用户首次登录时创建新令牌,然后在每次调用中创建新令牌,然后在下次调用中使用它。只使用带有用户+令牌的表来保护您的所有呼叫。