码迷,mamicode.com
首页 > Web开发 > 详细

OAuth2 结合网站授权流程分析

时间:2015-09-30 18:22:47      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

第一步:组装 URL 请求获取授权码 code
    1. 用户访问一个第三方 URL 网址,这时第三方服务端收到请求,组装 URL,随机生成 state 并存储(Cookies、Session、Mysql等),然后引导用户请求访问该 URL(自动跳转到该 URL)
    2. 用户会被带到开放平台的授权网址页面,用户登录操作后,会跳转到第三方的回调地址,并且 URL 会带上 code 和 state

第二步:通过 code 获取 access_token
    1. 第三方服务端获取 code 和 state
    2. 第三方服务端验证 state,以确保该请求是第三方服务器自己发起的,防止 csrf 攻击
    3. 第三方服务端验证使用 code 加上 AppID、AppSecret 等,通过 API 接口换取 access_token(请求远程 API 获取远程数据)

第三步:通过 access_token 调用接口
    1. 第三方服务端获取到 access_token 后,通过 API 接口获取用户个人信息,并完成登录或注册动作,成为第三方用户

以上部分为授权并获取用户信息
接着第三方网站需要通过获取到的用户信息进一步操作(注册或登录)

1. 判断用户是否登录状态,是的话直接绑定用户
2. 非登录状态则查询该用户是否绑定,如果已经绑定则跳转,如果无绑定则忽略
3. 这时判断获取的用户信息组装的用户名是否存在,不存在则直接添加,存在则系统重新组装用户明,然后判断是否用户名是否在线,直到不存在添加用户为止
4. 这时继续判断添加用户的方法执行是否成功,不成功则提示注册失败,成功则拷贝用户头像并更新用户数据,然后执行登录。

1. 什么是授权临时票据(code)?
答:第三方通过 code 进行获取 access_token 的时候需要用到,code 的超时时间一般为几分钟(例如:10 分钟),一个 code 只能成功换取一次 access_token 即失效。code 的临时性和一次保障了授权登录的安全性。第三方可通过使用 https 和 state 参数,进一步加强自身授权登录的安全性。
 
2. 什么是授权作用域(scope)?
答:授权作用域 scope 代表用户授权给第三方的接口权限,第三方应用需要向开放平台申请使用相应 scope 的权限后,使用文档所述方式让用户进行授权,经过用户授权,获取到相应 access_token 后方可对接口进行调用。
通俗点来说就是,API 接口权限。例如:获取用户个人信息 get_user_info 接口、获取用户粉丝列表 get_fanslist(当然这些要开放平台有这些 API 才行,这里只是举例)

OAuth2 结合网站授权流程分析

标签:

原文地址:http://my.oschina.net/u/205403/blog/512935

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!