需要通过连接到数据库的WCF服务对用户进行身份验证

时间:2011-09-26 14:51:49

标签: wcf asp.net-mvc-3 authentication asp.net-membership

我越来越沮丧地正确进行身份验证。通常我会使用我不熟悉的术语,因此回答者会误解我的问题。对于许多实现情况来说,这并没有帮助。

所以现在我将尝试解释有关我的项目的事实和要求,以便我可以指出一个好的解决方案。

我将拥有一个包含我需要的信息的数据库。此信息中包含密码的用户名和盐渍哈希值。此数据库将连接到WCF Web服务,该服务将数据提供给其他前端项目。

其中一个前端项目是用户将用于登录的asp.net MVC 3网站等。现在,这样一个项目的默认值是某种SQlMembership,在这种情况下不正确,因为这个站点没有连接到数据库(它甚至可能不是MSQL数据库)。

以下是我看到的实现,但无法确定如何正确使用。

1)在MVC项目中编写我自己的MembershipProvider,它将查询WebService以进行验证。在这里,我的意思是它只是为满足其所有需求而调用一些方法。不喜欢它的安全问题,客户端解决方案。

2)使用服务端MembershipProvider的Validata但我必须在每次操作时发送userName密码,出于安全原因我无法存储密码。

3)然后我发现了一个名为WCF authenticationService http://msdn.microsoft.com/en-us/library/system.web.applicationservices.authenticationservice.aspx的东西,它似乎是我需要的东西,但我在理解其工作原理时遇到了问题。我希望它成为我服务的一部分,但它似乎是一项专注的服务。它还没有真正解释它如何进行身份验证(我需要根据我的表进行自定义身份验证,而不是为我创建的默认表)。这是一篇帖子Should authentication be in a separate service for wcf?同样的问题,我不确定如何解决。

WCF身份验证服务能否成为适合我的工具?

对于那些不了解asp.net,网络或服务术语的人,您能回答这个问题吗?

修改

这是我希望的一种解决方案,但不确定是否存在。

WCF服务公开在服务中定义的MembershipProvider,RoleProvider,ProfileProvider。

在membership \ providers \ add下的MVC web.config中,MembershipProvider与端点一起添加到服务中。与RoleManager等相同。

因此,当我在MVC项目中调用MembershipProvider来验证用户时,它会自动调用该服务并在那里进行检查,当它发生在Authorize属性上时,它也会自动检查服务中的RoleProvider。

但是,我也希望自己限制服务调用,即使它们位于[Authorized]属性方法中,在引用Web服务的其他客户端中也可能不是这样。如果来自网站的电话可以自动访问forms.authentication cookie,那就太喜欢了。

1 个答案:

答案 0 :(得分:1)

如果用户登录或访问您服务的用户,我不清楚您要准确验证的内容。此外,我不确定你如何回答有关WCF安全的不使用服务术语,也不确定如何在不知道asp.net的情况下解决这个问题。我会尽我所能。

  • 如果您要对用户登录进行身份验证,则可以实现自己的MembershipProvider并拥有服务请求凭据并返回经过身份验证的用户。
  • 经过身份验证后,您可以为每个用户分配GUID。此GUID是随每条消息一起传输的ID(在消息头中编码),并验证用户是否可以调用服务方法。
  • 这不涉及传输安全性,如果您希望通过网络保护邮件安全,则应配置传输安全性,但这是另一回事,不涉及身份验证。

希望这能以某种方式帮助你。我试图让它成为最不可能的技术,并且遗漏了太复杂的东西。希望这有所帮助...