标签(空格分隔): 未分类
通俗的例子解释 OAuth 和 OpenID 的区别
现在很多网站都可以用第三方的账号登陆, 比如, 现在我要登录淘宝买东西, 而如果我没有淘宝的账号, 我也可以用微博的账号登录, 这个微博账号就是第三方账号了.
OpenID 强调 验证 authentication, 而 OAuth 强调 授权 authorization. 验证就是说 "我" 是不是(微博用户), 而授权是说 "淘宝" 可不可以, 而可不可以的前提则是 "我" 是不是.
过程大概是这样:
我点开微博登录的链接, 淘宝就跳到微博登录页面, 问我你是不是那个微博用户, 是的话你用你的账号密码去登录, 你先去给微博验明正身, 成功的话再来找我
好啦, 我屁颠屁颠输入账号跟密码, 如果可以登录说明我这个身份是对的, 通过了微博的验证后微博就告诉淘宝说, 没错没错, 我家里确实有么这个家伙
上面这些都是 OpenID 的责任, 而且 OpenID 也只做这件事, 就是前面说的是不是
然后呢, 淘宝就说好好, 有你微博验证我放心, 于是就让我通过了
等等, 这时淘宝只知道微博他们家有我存在, 但是并不知道我在微博家里叫什么名, 做过什么事, 其实淘宝也不应该知道, 对吧, 要是知道我在微博家老是到处举报别人卖假货坑顾客什么的, 那我让你进我大淘宝岂不是会坏了我的大事, 你丫是来捣乱的吧(至于淘宝为什么会这么想, 哼哼~你们懂的)
所以, 淘宝通常就会做一件事, 什么事呢? 这时就轮到 OAuth 出场了, 淘宝在把我交给微博验明正身的时候其实还 "忽悠" 了我, 明明只是验个身份, 却问我要不要把我在微博家叫什么名做过什么事也告诉它(就是通常看到的几个打勾选项: 允许访问我的昵称 / 允许访问我的头像等等), 淘宝说这样就可以为我提供更多的服务, 什么服务呢? 模凌两可, 我呢看到有更多服务也没多想就打勾了, 不要白不要是吧.
这里就用到了 OAuth, 就是前面说的可不可以, 这个要是真发现我在微博家干过的事, 会不会把我加入重点监控对象, 那就要看淘宝有多少节操了
其实现在很多的第三方登录都是这样, 验证身份的同时顺便把你在其他地方的资料拿到手, 名曰资料共享, 其实共享一些非敏感信息倒也无妨, 还可以免去了每去一个新网站都要填写一大堆重复资料的问题. 但是我要吐槽的是, 很多网站明明让我用第三方账号登录, 你都 OAuth 了为毛登录后还要再填一遍邮箱昵称之类的东西? 早知道这样我还不如直接在你这边注册就好了, 在我看来这是用户体验的问题了.
OAuth2.0 认证和授权机制讲解 https://www.tianmaying.com/tutorial/oAuth-login
浅谈 OAuth 和 OpenID 相关技术 http://www.sohu.com/a/280388046_505923
基于 Spring 的 GitHub 第三方登录 -- 通用化的第三方登陆实现
首先登陆 GitHub 账号, 进入 [Settings] -> 选择 [Developer settings] -> 选择[Register a new application] , 这里我们可以看到当前账户所拥有的第三方应用.
注意右上角的 Client Id 和 Client Secret, 这两个信息是用来标识第三方应用身份的相关信息, 特别注意 Client Secret,Client Secret 是用来和授权服务器交换验证凭证 (Access Token) 的, 千万不能暴露出去.
这样, 我们就拥有了第三方应用的身份, 可以喝 GitHub 交互进行 OAuth2 的授权了.
来源: http://www.bubuko.com/infodetail-3046923.html