【问题标题】:Passwords for applications using third-party authentication?使用第三方身份验证的应用程序的密码?
【发布时间】:2009-06-14 23:37:11
【问题描述】:

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

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

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

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

[有关此类应用的会员提供商,另请参阅my other question。]

【问题讨论】:

    标签: asp.net-mvc federated-identity rpxnow


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我确实已经看过 DotNetOpenID;在 v3.1 中也是 MVC 示例。但是,它只处理身份验证,而不处理授权。 ASP.NET 成员资格似乎是授权系统的基础,尤其是 MVC 的 [Authorize] 属性。如果可以避免的话,我不想实现自己的授权系统。
      猜你喜欢
      • 2011-01-30
      • 1970-01-01
      • 2018-09-05
      • 1970-01-01
      • 2020-09-18
      • 2015-12-14
      • 2020-12-27
      • 1970-01-01
      • 2022-07-20
      相关资源
      最近更新 更多