第三方登陆常用的有QQ,微信,新浪等登陆方式。在微信公众号的网页授权,百度熊掌号的网页授权中,也和第三方登陆流程相似。
第三方登陆用的是oAuth2.0协议。流程如下所示:
1.第三方向资源方申请appID和AppSecret。
2.第三方传参(appID,return_url和防止xss攻击的state)到资源服务器。
3.资源服务器接受参数并且判断appid是否存在。并跳转至用户授权页面。
4.用户授权。然后资源服务器收到用户授权。此时生成code,并把code存库,标志时间戳和未使用状态(一般code有使用次数要求),然后重定向到第三方服务器。
5.第三方服务器通过get接受code。第三方通过code,appID,AppSecret等参数post 请求资源服务器。
6.资源服务器接受并判断code,appID,AppSecret是否合法,生成access_token,refresh_token并设置这些数据的有效期等。之后向第三方服务器返回access_token,refresh_token,opened(用户唯一标识)。
7.第三方通过access_token和opened去请求资源服务器。
8.资源服务器接受并判断合法与否。若合法,向第三方服务器返回用户信息等。
网页授权和第三方登陆的用图除了给第三方授权之外,也可以给自己的软件授权,从而达到多款软件公用一个账号密码的作用。