您的位置:首页 > 运维架构

OpenID 和 OAuth 有什么区别?

2017-07-05 17:44 344 查看
 OpenID是Authentication

OAuth是Authorization

前者是网站对用户进行认证,让网站知道“你是你所声称的URL的属主”

后者其实并不包括认证,只不过“只有认证成功的人才能进行授权”,结果类似于“认证+授权”了。OAuth相当于:A网站给B网站一个令牌,然后告诉B网站说根据这个令牌你可以获取到某用户在A网站上允许你访问的所有信息

如果A网站需要用B网站的用户系统进行登录(学名好像叫federated login),它可以
选择OpenID认证,然后通过attribute exchange获取用户的昵称或其他通过OpenID暴露出来的用户属性,或者
选择OAuth认证,获取到token后再用token获取用户昵称或其他允许被访问的信息

关于OAuth的授权,不能说是滥用,是OAuth Service Provider对OAuth的权限没有细分。好比我只需要用户的昵称性别,你却把修改昵称性别的权限也授权给我了(虽然我不一定会去用)。这个错在OAuth Service Provider

作者:yegle

链接:https://www.zhihu.com/question/19628327/answer/12591409

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

作者:知乎用户

链接:https://www.zhihu.com/question/19628327/answer/23291315

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

OAuth学习笔记OpenID学习笔记都说了可以用来认证身份,但是他们之间到底有哪些不同,哪些情况应该用OAuth,哪些情况应该用OpenID呢?下面就一起来看下他们之间的区别。

简短的说,OAuth关注的是authorization;而OpenID侧重的是authentication。从表面上看,这两个英文单词很容易混淆,但实际上,它们的含义有本质的区别:

authorization: n. 授权,认可;批准,委任
authentication: n. 证明;鉴定;证实
OAuth关注的是授权,即:“用户能做什么”;而OpenID关注的是证明,即:“用户是谁”。下面就分别来说两者的功能。

OpenID

用户希望访问其在http://example.com的账户 http://example.com (在OpenID的黑话里面被称为“Relying Party”) 提示用户输入他/她/它的OpenID
用户给出了他的OpenID,比如说”http://user.myopenid.comhttp://example.com 跳转到了用户的OpenID提供商“mypopenid.com”
用户在”myopenid.com”(OpenID provider)提示的界面上输入用户名密码登录
“myopenid.com” (OpenID provider) 问用户是否要登录到http://example.com
用户同意后,”myopenid.com” (OpenID provider) 跳转回http://example.com http://example.com 允许用户访问其帐号
OAuth

用户在使用http://example.com时希望从http://mycontacts.com导入他的联系人 http://example.com (在OAuth的黑话里面叫“Consumer”)把用户送往http://mycontacts.com
(黑话是“Service Provider”)
用户在http://mycontacts.com
登录(可能也可能不用了他的OpenID)
http://mycontacts.com问用户是不是希望授权http://example.com访问他在http://mycontact.com的联系人
用户确定
http://mycontacts.com
把用户送回http://example.com http://example.comhttp://mycontacts.com拿到联系人 http://example.com 告诉用户导入成功
OpenID是用来验证的,就是说可以用一个url来唯一表明身份(不用挨个记每个网站的用户密码)。OAuth是用来授权的(俺可以授权一个网站访问俺在另外一个网站的数据,而俺不用把俺的密码给第一个网站。

很多人现在错误的把OAuth当做OpenID使用。但是其实也不会照成什么影响。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OpenID OAuth 区别