2009-06-14 68 views
0

我有一个ASP.NET MVC应用程序,我刚刚集成了RPX第三方联合身份验证系统。整合工作正常,但我有点困难,在ASP.NET的层面上围绕如何处理它。使用第三方认证的应用程序的密码?

因为身份是外部处理的,我在我的应用程序中不需要密码:我永远不会收到用户的密码,只是他们的身份。但是,ASP.NET会员提供程序的东西需要密码传递以创建用户,签署用户等。

我一直在考虑在创建时使用new Guid(),但这需要调用该数据库在我可以通过成员资格提供者签署用户之前检索用户的密码。我可以为每个用户使用相同的密码,以便事先知道它,但是我担心这会使我的用户数据不安全。

我很想知道其他网站如何处理此问题,例如,StackOverflow。

[请同时参阅my other question,有关成员资格提供这样的应用程序。]

回答

1

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

开始通过确保没有人可以直接在你的数据库使用的用户名和密码进行验证 - 我想这已经是你正在使用RPX做实际验证的情况下,你只能调用ASP.NET会员提供商一旦你已经建立了用户的身份。

然后,存储在您身边的密码变得不重要,因为它不是秘密 - 如果我可以计算出某人的密码是在您身边,它不会突然危及他们的数据,因为我仍然无法登录那个信息。用户的秘密由第三方提供商管理,而不是你。

因此,您最好还是存储最方便的(即众所周知的虚拟值) - 您也可以在成员资格提供程序上关闭密码加密,以恢复服务器上的一些周期。加密/散列值不用于验证任何人的身份,这一点没有意义。

1

为什么要使用asp.net成员呢?它并不真正适合你,你在做什么是第三方认证。也许你可以看看dotnetopenid project和例子,因为他们有一个经典的asp.net网站的例子,你可以修改mvc吗?他们有一个wiki here也许google dotnetopenid mvc?

+0

我已经看过DotNetOpenID;在v3.1中也是MVC样本。但是,它只处理认证,而不是授权。 ASP.NET成员身份似乎是授权系统的基础,特别是MVC的[授权]属性。如果我可以避免,我不想实施我自己的授权系统。 – alastairs 2009-06-15 07:16:26

相关问题