我越来越沮丧地正确进行身份验证。通常我会使用我不熟悉的术语,因此回答者会误解我的问题。对于许多实现情况来说,这并没有帮助。
所以现在我将尝试解释有关我的项目的事实和要求,以便我可以指出一个好的解决方案。
我将拥有一个包含我需要的信息的数据库。此信息中包含密码的用户名和盐渍哈希值。此数据库将连接到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,那就太喜欢了。
答案 0 :(得分:1)
如果用户登录或访问您服务的用户,我不清楚您要准确验证的内容。此外,我不确定你如何回答有关WCF安全的不使用服务术语,也不确定如何在不知道asp.net的情况下解决这个问题。我会尽我所能。
希望这能以某种方式帮助你。我试图让它成为最不可能的技术,并且遗漏了太复杂的东西。希望这有所帮助...