OpenID与OAuth(v1和v2)应该遵循什么?

4
我注意到大型网站都使用Openid而不是Oauth
我已经实现了对GoogleFacebookoauth。我的需求如下:
  • 通过Google/Facebook验证用户
  • 为用户在我的网站上管理简单的用户资料,这些资料来自Google/Facebook的预填充信息。
  • 那么我应该选择Oauth还是Openid
    何时应该使用oauth

    1
    你要找的是 OpenID 和 OAuth。 - Iacks
    2
    OAuth 不是 用于身份验证的。OAuth 仅用于 权限委派。 - abbot
    1
    “用于身份验证和授权。”这并不完全正确。OAuth仅用于授权。只有当当前令牌和/或服务器允许(授权)进行身份验证时,才可用身份验证。因此,可能会有一个允许您执行某些操作但不允许您执行身份验证的令牌。 - zerkms
    是的,我明白它不是两者兼备的 - 但是当您想要授权时,您需要进行身份验证,对吗? - Yugal Jindle
    只是将获取到的所有信息汇总起来。希望这个OpenID和OAuth比较有用。 - raksja
    1个回答

    7
    它们被用于不同的目标。
    OpenID是用来认证你站点上的SomeUser,要求一些其他站点提供该用户身份的证明。
    OAuth是用来授予SomeOtherParty(例如其他站点或应用程序)代表SomeUser在您的站点上执行某些操作的权限(这意味着SomeUser已经在您的站点上进行了某种身份验证)。
    更多的评论,针对作者的请求:
    你不能选择“OAuth进行用户身份验证”,因为OAuth不是用户身份验证协议(尽管其名称中有'auth')。
    使用OpenID,您可以在实际上没有对代码进行任何修改的情况下使用几乎任何OpenID提供者对用户进行身份验证。
    如果您选择“使用Facebook OAuth进行用户身份验证”,则实际上并没有对用户进行身份验证。您正在请求用户为您的应用程序获取访问facebook上用户个人资料的权限。您正在访问Facebook服务以获取用户信息。这意味着,如果您想使用另一个OAuth提供程序服务来对用户进行身份验证,则除非新提供商支持与facebook相同的API,否则您将永远无法做到这一点,需要编写新的“身份验证”代码。

    2
    我想补充一下,原帖中所说的“所有大型网站都使用OpenID而不是OAuth”这个断言是不正确的。目前OAuth比OpenID更受欢迎。 - jterrace

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接