OAuth
open authorization 开放认证
一般用于第三方登录,例如微信授权登录,在不知道你微信账号密码的情况下,仍然可以登录其他网站
流程
- 用户访问网站-> 选择第三方登录->请求第三方地址->输入第三方账号密码->第三方返回登录结果
版本
- 1.0发布于07年,存在bug
- 2.0发布于10年初
OAuth应用
- 根据第三方用户登录方式不同,开发特定功能
- 同一公司间用户数据开放,例如淘宝账号登录支付宝等
3
oauth实现流程
- 请求oaut登录页,这个登录页的url成为request token url,未授权的令牌请求服务地址
- 此网址是带有特定参数的url,例如跳转地址,appid等
- 会生成一个appid和一个appkey
- 例如:https://graph.qq.com/oauth/...?...&client_id=123456&...&redirect_uri=http://www.baid.com/xxx
- 第三方登录需要先去开通,会分配一个client_id给用户,申请时,需要填写回调地址,qq会验证这个redirect_uri是否合法等
- 用户使用qq登录并授权
- 验证成功会跳转到redirect_uri,并且会带上一个参数CODE,是一个加密的字符串
- 返回登录结果
- 利用返回的code,验证code是否合法,
- user authorization url 用户授权的令牌请求服务器,进行code验证的url,防止回话劫持,返回一个假code
- 例如 https://xxx.qq.com/oauth/...?...&client_id=xxx&client_secret=xxx&code=xxx
- code有过期时间,很快就过期,一个code值可以使用一次
- 响应数据会返回登录用户的一些基本信息,qq号,头像,昵称等
accessToken
- 用户通过第三方应用访问oauth接口的令牌
- 利用此令牌可以获取一些用户信息,分享内容等,标识这个第三方应用已经登录,有一些权限
- accessToken与refreshToken
- accesstoken 过期时间一般很长10天以上
- accessToken的更新有两种,一是客户端重新授权,2是服务器推送
网友评论