我有一个ASP.NET MVC应用程序,我刚刚集成了RPX第三方联合身份系统。集成工作正常,但是我在ASP.NET层面上如何处理它时遇到了一些困难。
因为身份是在外部处理的,所以我的应用程序中不需要密码:我从未收到用户的密码,只是他们的身份。但是,ASP.NET成员资格提供程序的东西需要传递密码才能创建用户,签署用户等等。
我一直在考虑在创建时使用new Guid()
,但这需要在我通过成员资格提供程序签署用户之前调用数据库来检索用户的密码。我可以为每个用户使用相同的密码,以便事先知道,但我担心这会使我的用户的数据不安全。
我有兴趣了解其他网站如何处理此问题,例如StackOverflow。
[请参阅my other question,了解此类应用的会员资格提供商。]
答案 0 :(得分:1)
为什么要使用asp.net会员资格呢?它并不真正适合您正在进行的第三方认证。也许您可以查看dotnetopenid project和示例,因为它们有一个经典的asp.net站点示例,您可以修改为mvc?他们有一个wiki here也许google dotnetopenid mvc?
答案 1 :(得分:1)
但我担心这会使我的用户数据不安全。
首先确保没有人可以使用用户名和密码直接对您的数据库进行身份验证 - 我想这是因为您使用RPX进行实际身份验证,并且您只调用一次ASP.NET成员资格提供程序你已经建立了用户的身份。
然后,存储在您身边的密码变得无关紧要,因为这不是秘密 - 如果我能弄清楚某人的密码在您身边,它不会突然危及他们的数据,因为我仍然无法使用该密码登录信息。用户的秘密由第三方提供商管理,而不是您。
所以你也可以存储最方便的东西(即一个众所周知的虚拟值) - 你也可以在成员资格提供者上关闭密码加密,以恢复服务器上的一些周期。加密/散列值没有用于验证任何人的身份。