在其他网站上验证用户帐户的策略?

时间:2011-01-14 09:29:47

标签: ruby-on-rails authentication

我正在开发一个小型Rails应用程序,我希望用户能够证明他们在其他站点拥有的帐户,Live Journal,Stack Overflow,Reddit等实际上是他们的。

任何人都可以就如何最好地完成这样的事情提供任何指导吗?

我已经概述了帐户验证的一些潜在选项。

  1. 要求用户基本上通过SSL将他们的登录凭据传递给应用程序,并允许它验证它是否可以登录。然后,当然,注销并删除任何用户会话数据/凭据。

    问题:
  2.     
              
    • 人们不会对将他们的凭据暴露给第三方系统的想法感到兴奋。
    •         
    • 交出登录信息可能会对很多人产生影响         网站的ToS协议。
    •         
    • 这个想法让我感到不安。

    •     
  3. 向用户提供哈希并要求他们将其插入其公开个人资料的某个字段中。例如,将“aTWIUqHRgxEpSVaQzCYc”放在我的Stack Overflow帐户的位置字段中,然后让应用程序根据网站通过API或屏幕抓取来验证散列。

    问题:
  4.     
              
    • 对于超过一个或两个网站来说,这很乏味。
    •         
    • 某些网站没有包含用户提供信息的任何排序字段。例如Reddit。

    •     
  5. 再次,向用户提供哈希,但要求他们通过网站的消息系统将该哈希发送到指定的用户帐户。服务器进程会定期检查该帐户的收件箱,然后将该哈希链接到该帐户。这似乎是最简单的解决方案。

  6.     
              
    • 3B。在适用的情况下让用户成为指定帐户的朋友。
    •     

    我还没有做足够的尽职调查,调查OAuth或OpenId可能会提供哪些选项来智能地谈论它们。

    我意识到必须以这种方式验证帐户的头痛将导致进入障碍。不仅如此,还没有一个统一的方法来做到这一点。

1 个答案:

答案 0 :(得分:3)

我会使用OAuth / OpenID,有一个名为omniauth的gem,它支持各种各样的外部提供程序。瑞恩贝茨已经3 railscasts about omniauth,所以你可以从那里开始!它很容易启动和运行。如果您按照Ryan Bates的railscast进行操作,您可以允许您的用户使用多个提供商(例如twitter,openid和facebook)。