1

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

编辑

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

4

4 回答 4

0

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

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

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

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

于 2012-04-17T14:43:56.387 回答
0

对的,这是可能的。看看这篇文章,它展示了一个使用自定义提供程序的示例。

于 2012-04-17T12:34:48.550 回答
0

这一切都可以用 WCF 来完成,我现在将它用于我们拥有的 WCF 服务。

您可以创建自己的成员资格提供程序(就像您为 asp.net 应用程序创建的那样),然后也将其引入 WCF。如果您在谷歌上搜索“WCF 会员资格提供者”,就会有大量相关信息。这篇文章也可能对您有所帮助:WCF Authentication using SQL Membership Provider

于 2012-04-17T12:35:45.023 回答
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>
于 2012-04-17T12:49:51.600 回答