OpenID与OAuth的比较

135
可能重复问题:
OpenID和OAuth之间的区别是什么?

OpenID和OAuth究竟有什么不同?它们看起来对我来说完全相同。

我应该说明,我打算在Drupal中使用它们,如果这有任何差异。所以我想我受限于Drupal中可用的模块实现。

5个回答

246

29
我喜欢这个回答,比标记为答案的那个更好。还有其他人吗? - Randy L
由于投票数的差异,马克得到了一个漂亮的徽章。这是肯定的。 :) - Robert Koritnik
@Mark:现在就是这样了。我给被采纳的答案点了赞(也给你的点了赞)。应该会有一个徽章了。 - Robert Koritnik
我也是,我给你点赞了,我认为这是一个非常好的总结。 - Dorian
没关系,人们总能找到最受欢迎的答案! - HaveAGuess
2
官方OAuth网站的关于非常有帮助。虽然不值得再写一个答案,但绝对是一个不错的提及。 - mateuscb

107

如果你在一个网站上有一个带有某些私人资源的账户,你可以使用用户名/密码组合登录。

如果一个应用程序想要获取一些私人资源,并且你不想给他们你的用户名/密码,那么就使用OAuth

但是,如果你想要使用一个唯一的账户登录多个网站,则使用OpenID

(有些网站像 OpenID 一样使用 OAuth,如果你的 OpenID 账户中有一些私人内容,也可以使用 OpenID 像 OAuth 一样)


7
已将收集到的所有信息汇总。希望这个OpenID和OAuth对你有用。 - raksja

78

OpenID = 使用 OpenID 提供商(如 Google)的登录凭据来登录到其他应用程序(如 Stack Overflow)。

OAuth = 允许应用程序(如 TwitPic)代表您执行操作并访问您使用的应用程序(如 Twitter)中的信息。

它们可以一起使用。


Stack Overflow或其他属于stackoverflow的网站(如serverfault)使用OAuth进行新用户注册,使用Google或Facebook进行注册,使用其域名下的其他网站(如serverfault或askubuntu)使用OpenID进行注册。在OAuth中,我们可以限制从认证方(Facebook)流向服务提供方(Stack Overflow)的信息。在OpenID中,我们只需提供一个证书,表示该人合法,并允许访问整个数据库。由于Stack Overflow或Ask Ubuntu属于同一域,它们可以交换具有对用户数据库完全访问权限的证书。 - Revanth Kumar

20

OpenID 是用于多站点身份验证的纯净方式,使用单一的凭据。

OAuth 旨在让应用程序彼此安全地访问,即数据共享。可以将其视为在两个事物之间建立信任关系,例如允许您的 Flickr 帐户发布内容到您的 Facebook 页面上,或将您的 Flickr 照片连接到第三方打印网站上。

OAuth 并不仅限于站点之间的使用。您可以将没有“身份”概念的桌面应用程序链接到像 Facebook 或 Twitter 这样的基于身份的网站(例如,Twitter 客户端能够在不必存储登录详细信息的情况下发布消息到您的推文中)。

虽然有些相似之处,但 OAuth 主要是用于服务与服务之间的链接。


20

OpenID 是使用一个用户名在多个网站上进行认证的技术。
OAuth 是授权技术,即网站A有权限调用网站B的API接口。

以下是另外一篇很好的文章/类比,可以解释这两者之间的区别:http://www.dotnetopenauth.net/about/about-oauth/


2
站点A有调用站点B的API的权限。这为我解决了问题。非常感谢。 - bad_keypoints
另外,如果我希望访问我的网站的用户通过使用Google登录来注册我的网站,然后为了会计目的存储他们的电子邮件ID的哈希值与他们的所有活动相关联,那么我将使用...OpenID,对吗? - bad_keypoints
@ronnieaka OpenID 对此完全可以胜任。 - Landon Poch
好的,谢谢!这是一个很大的疑问。 - bad_keypoints

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