我有一个WCF应用程序,我想向某些人公开,但是为了让他们使用我想以某种方式验证它们的服务,是否可以创建我自己的成员资格提供程序来检查用户是否通过调用ValidateUser
方法验证?另外,我如何告诉我的绑定/行为使用此会员提供商?
我对此也有一些疑问。例如:如果我从我的客户端调用名为QueryStock
的webservice上的方法。是否首先使用我的成员资格提供程序验证用户在解雇方法之前,还是必须将用户名和密码作为参数传递,然后在我的方法中执行代码之前执行Membership.ValidateUser(username, password)
?
答案 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身份验证。
如果您有自己的方法来验证用户,我会尝试使用一种外观来使用用户+令牌调用每个服务方法,并保留一种“异步会话”。
因此,您可以在用户首次登录时创建新令牌,然后在每次调用中创建新令牌,然后在下次调用中使用它。只使用带有用户+令牌的表来保护您的所有呼叫。