OAuth : open Authorization 开发授权

OAuth : open Authorization  开发授权

用户访问慕课网,慕课网请求OAuth登陆页面,用户输入QQ号码和密码,这个页面的域名不属于慕课网是属于QQ的,随后把结果给慕课网,这个结果并不包含QQ号码,只是告诉慕课网当前用户是否登陆成功。

OAuth有2个版本。1.02.0
1.0发布于2007年
2.0发布于2010年

OAuth:
1.QQ用户授权慕课网使用QQ账号登陆
2.使用QQ的API一键分享
3.一个淘宝账号可以登陆淘宝所有其旗下的网站(阿里云、支付宝)。

不仅仅慕课需要QQ登陆功能,还有很多网站也要QQ登陆功能。需要提供网站站点的描述、域名、回调地址,QQ会给慕课网分配appid和appkey,就好像是账号和密码一样,appid是唯一的。

Redirect_uri是用户成功登陆之后跳转到哪里去,跳转过程中会加一个code参数,慕课网可以拿到这个code,这个code也会被别人获取,

client_id和cilent_secret是appid和appkey,code是用户授权登陆之后拿到的参数,code是会过期的5秒到一分钟,时间太长就会认为出现了问题。劫持到code必须在很短时间内破解,并且还要找到appid和appkey不是很容易的事情。再次检验了这个请求是不是合法的服务器发起的请求,对appkey做了比对,并看这个code是不是上个步骤发给慕课的code。这个请求的响应就是用户的QQ号码和头像。

Token是令牌,通行证。
第三方站点获取了用户的token,就可以QQ分享等功能了。
任意一次访问api都需要重新拼接url,并且url中带有accesstoken,访问同一个接口动态拼接出来的url都不一样。Post请求更安全。

AccessToken也有生命周期,但是比code时间长,一般是10天半个月几个小时,AccessToken只要没过期就可以一直使用AccessToken来访问api。
AccessToken过期:1、重新使用QQ号码登录。2、如果需要新的AccessToken,就携带参数要求重新分配新的AccessToken。

当QQ登陆完成后会返回一个code(字符串)到指定的回调地址上,然后根据code请求AccessToken(字符串),code是有有效时间的。AccessToken过期了会通过refresh_token换取新的AccessToken。换取新的AccessToken和第一次获取AccessToken是差不多的。

openID是每个用户的唯一标识,同一个QQ用户在不同站点使用QQ登陆的openID是一样的。

授权过程完成了,后面就是通过AccessToken和openID来调用api。AccessToken和openID可以放到cookie里面去,AccessToken的有效时长是保存在session里面,

自己的web应用请求新浪微博的登陆页面,用户输入微博的账号密码,登陆成功之后返回一个有效时间很短的code给自己的web应用,动态拼接code+appid+appkey给新浪,返回AccessToken给自己的应用,就可以通过AccessToken在有效期内以用户的身份调用api。
原文地址:https://www.cnblogs.com/yaowen/p/9450571.html