Asp.net mvc 使用第三方身份验证的应用程序的密码?

Asp.net mvc 使用第三方身份验证的应用程序的密码?,asp.net-mvc,federated-identity,rpxnow,Asp.net Mvc,Federated Identity,Rpxnow,我有一个ASP.NET MVC应用程序,我刚刚将第三方联合身份系统集成到其中。集成工作正常,但在ASP.NET级别上,我很难理解如何使用它 因为身份是由外部处理的,所以我在我的应用程序中不需要密码:我从不接收用户的密码,只接收他们的身份。但是,ASP.NET成员资格提供程序要求传递密码,以便创建用户、登录用户等 我一直在考虑在创建时使用new Guid(),但这需要调用数据库来检索用户的密码,然后才能通过成员资格提供程序登录用户。我可以为每个用户使用相同的密码,以便提前知道,但我担心这会使我的用

我有一个ASP.NET MVC应用程序,我刚刚将第三方联合身份系统集成到其中。集成工作正常,但在ASP.NET级别上,我很难理解如何使用它

因为身份是由外部处理的,所以我在我的应用程序中不需要密码:我从不接收用户的密码,只接收他们的身份。但是,ASP.NET成员资格提供程序要求传递密码,以便创建用户、登录用户等

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

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


[另请参阅,关于此类应用的会员资格提供商。]

那么为什么要使用asp.net会员资格?它并不真正适合您所做的第三方身份验证。也许您可以看看和示例,因为它们有一个经典的asp.net站点示例,您可以为mvc修改它?他们有可能是google dotnetopenid mvc

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

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

然后,存储在你这边的密码就变得无关紧要了,因为它不是一个秘密——如果我能知道某人的密码在你这边是什么,它不会突然泄露他们的数据,因为我仍然无法使用该信息登录。用户的机密由第三方提供商管理,而不是由您管理


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

我已经看过DotNetOpenID;在v3.1中也有MVC示例。但是,它只处理身份验证,不处理授权。ASP.NET成员资格似乎是授权系统的基础,特别是MVC的[授权]属性。如果可以避免的话,我不想实施我自己的授权系统。