使用 WCF 进行身份验证
本文关键字:身份验证 WCF 使用 | 更新日期: 2023-09-27 18:31:19
我有一个 WCF 应用程序,我想向某些人公开,但要让他们使用该服务,我想以某种方式对他们进行身份验证,是否可以创建我自己的成员资格提供程序,该提供程序将通过调用 ValidateUser
方法来检查用户是否经过验证?另外,我将如何告诉我的绑定/行为使用此成员资格提供程序?
编辑
我也对此有一些疑问。例如:如果我从客户端调用名为 QueryStock
的 Web 服务方法。它是在触发方法之前首先使用我的会员资格提供程序验证用户,还是必须将用户名和密码作为参数,然后在执行方法中的代码之前执行Membership.ValidateUser(username, password)
?
这都可以用 WCF 来实现,我现在正在将它用于我们拥有的 WCF 服务。
您可以创建自己的成员资格提供程序(就像您为 asp.net 应用程序所做的那样),然后将其也探测到 WCF 中。如果您用谷歌搜索"WCF 会员提供商",则有大量关于此的信息。这篇文章也可能对您有所帮助: 使用 SQL 成员资格提供程序的 WCF 身份验证
是的,这是可能的。看看这篇文章,它显示了使用自定义提供程序的示例。
我也有这个问题:在 WCF 中对每个调用进行身份验证
如您所见,您可以使用 ASP.NET 身份验证。
如果您有自己的方法来验证用户,我会尝试使用一种外观来调用每个带有用户 + 令牌的服务方法,并保持一种"异步会话"。
因此,您可以在用户首次登录时创建一个新令牌,然后在每次调用中,然后在下一次调用中使用它。仅使用带有用户 + 令牌的表来保护所有调用。
您需要在配置中定义行为,例如:
<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>