科技小辛辛|2.0,上班摸鱼写文章,就是为了让你理解OAuth

概念:OAuth(开放授权)是一个开放标准 , 允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如基本消息 , 照片 , 联系人列表) , 而无需将用户名和密码提供给第三方应用 。
一、应用场景
为了理解OAuth的适用场合 , 这里举一个使用第三方账户进行登录的例子 。
现在一般登陆都会采用第三方授权登陆 , 比较常见就是微信、qq、微博授权登陆 。 这里以微信授权登陆为例:
现在我在未注册的情况下去访问A网站,A网站为了提高用户体验 , 可以省去你在这次网站申请注册的步骤 , 让你通过微信授权登陆去拿去你在微信上的基本信息 。
问题就在这里 , 如果拿到微信用户基本信息给到A网站 , 直接给A网站我登陆微信的账号密码 , 那么问题可想而知 。
1、这个也太不安全了 , 我只想给A网站我的在微信上的基本信息 , 而不是所有信息 , 通过用户密码可以获取我的所有信息 。
2、用户只有修改密码 , 才能收回赋予''A网站''的权力 。 但是这样做 , 会使得其他所有获得用户授权的第三方应用程序全部失效 。
3、只要有一个第三方应用程序被破解 , 就会导致用户密码泄漏 , 以及所有被密码保护的数据泄漏 。
OAuth就是为了解决上面这些问题而诞生的 。
从上面可以看出主要有三个身份
用户
使用第三方账户登录一个新的网站,对于用户来说就不需要走复杂的注册流程 。
第三方平台(微信)
上面来讲微信就是第三方平台 , 那么对于第三方如何做才能保证用户的安全呢?
就在A网站在通过微信授权登陆之前 , 需要提供资质到微信 , 微信审核,审核通过后给要求接入的服务商一个唯一凭证,标明服务商身份 。
服务商(A网站)
我们要做的就是将这两者进行连接起来 , 先到第三方平台资质审核 , 审核通过后 , 用户去第三方平台授权登录后 , 就可以获取用户基本信息 , 完成登陆 。
二、OAuth的思路
这里还是以服务商(A网站) , 和第三方平台(微信)授权登录来缕这个思路 。
OAuth在服务商(A网站)与第三方平台(微信)之间 , 设置了一个授权层(authorizationlayer) 。 服务商不能直接登录第三方平台 , 只能登录授权层 ,
以此将用户与服务商(A网站)区分开来 。 服务商(A网站)登录授权层所用的令牌(token) , 与用户的密码不同 。 用户可以在登录的时候 , 指定授权层令牌的权限范围和有效期 。
服务商(A网站)登录授权层以后 , 第三方平台根据令牌的权限范围和有效期 , 向服务商(A网站)开放用户储存的资料 。
这里缕下大致流程
1、接入前准备(资质审核)
如果一个服务商需要使用第三方平台的服务 , 那么首先是需要向第三方平台提供资料,第三方平台审核通过后 , 会给服务商一个唯一标识的ID,这样通过第三方平台授权的时候 ,
第三方平台就知道是哪个商户了 。
科技小辛辛|2.0,上班摸鱼写文章,就是为了让你理解OAuth
文章图片
一般来说你会得到如下的两个参数:
appid代表你的应用唯一IDappsecret对应的密钥这个部分每家平台都不一样,具体如何获取你的APPID请参考对应平台的指南.
注意第三方平台给你的不一定是APPID,我的意思不是连名字都完全一样,有的平台给的参数多有的给的少,总之都是用于验明身份的.
2、用户要使用第三方登陆
科技小辛辛|2.0,上班摸鱼写文章,就是为了让你理解OAuth
文章图片
这里我们以登录为例.
在这个流程中服务器(A网站)接受到了用户想要第三方登录的请求,我们使用之前获取的APPID(不同平台叫法和参数可能不同),然后拼接为成第三方平台指定的url
然后直接重定向到这个url.
科技小辛辛|2.0,上班摸鱼写文章,就是为了让你理解OAuth


推荐阅读