0

我有一个 ASP.NET MVC 应用程序,我刚刚在其中集成了RPX第三方联合身份系统。集成工作正常,但我在想如何在 ASP.NET 级别处理它时遇到了一些困难。

因为身份是在外部处理的,所以我的应用程序中不需要密码:我从来没有收到用户的密码,只是他们的身份。但是,ASP.NET Membership Provider 需要传递密码才能创建用户、登录用户等。

我一直在考虑new Guid()在创建时使用,但这需要调用数据库以检索用户的密码,然后我才能通过会员提供程序登录用户。我可以为每个用户使用相同的密码,以便提前知道,但我担心这会使我的用户数据不安全。

我很想听听其他网站如何处理这个问题,例如 StackOverflow。

[另请参阅我的另一个问题,关于此类应用程序的会员提供商。]

4

2 回答 2

1

那为什么要使用 asp.net 会员资格呢?它并不真正适合您正在做的事情,即 3rd 方身份验证。也许您可以看一下dotnetopenid 项目和示例,因为它们有一个经典的 asp.net 站点示例,您可以针对 mvc 进行修改?他们在这里有一个 wiki也许是 google dotnetopenid mvc?

于 2009-06-15T05:17:16.900 回答
1

但我担心这会使我的用户数据不安全。

首先确保没有人可以使用用户名和密码直接对您的数据库进行身份验证 - 我想这已经是这种情况,因为您正在使用 RPX 进行实际身份验证,并且您只有在已经调用 ASP.NET 成员资格提供程序后建立了用户的身份。

然后,存储在您身边的密码变得无关紧要,因为它不是秘密 - 如果我能弄清楚您身边的某人的密码,它不会突然泄露他们的数据,因为我仍然无法使用该信息登录。用户的秘密由第三方提供商管理,而不是您。

因此,您不妨存储最方便的内容(即众所周知的虚拟值) - 您也可以在会员提供商上关闭密码加密,以在服务器上取回一些周期。对不用于验证任何人身份的值进行加密/散列是没有意义的。

于 2009-06-18T07:28:08.847 回答