您当前的位置: 首页 >  spring
  • 4浏览

    0关注

    284博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Spring | OAuth2】OAuth2介绍与使用

区块链(Web3)开发工程师 发布时间:2020-04-14 13:57:09 ,浏览量:4

什么是OAuth2

OAuth(Open Authorization,开放授权)是为用户资源的授权定义了一个安全、开放及简单的标准,第三方无需知道用户的账号及密码,就可获取到用户的授权信息 OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0

应用场景

第三方应用授权登录:在APP或者网页接入一些第三方应用时,时常会需要用户登录另一个合作平台,比如QQ,微博,微信的授权登录,第三方应用通过oauth2方式获取用户信息

运作流程

微信开发文档流程说明如下:

1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;

2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;

3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

具体的实现流程图如下:

OAuth2流程图

步骤说明(以微信授权登录为例)

1.用户访问第三方网站,第三方应用需要用户登录验证,用户选择微信授权登录 2.第三方应用发起微信登录授权请求

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
参数是否必须说明appid是公众号的唯一标识redirect_uri是授权后重定向的回调链接地址response_type是返回类型,请填写codescope是应用授权作用域,snsapi_base 、snsapi_userinfostate否重定向后会带上state参数,该值会被微信原样返回,我们可以将其进行比对防止攻击或者做用户步骤1访问url保存wechat_redirect否直接在微信打开链接,可以不填此参数。做页面302重定向时候,必须带此参数

3.微信服务器拉起用户授权确认页面 4.用户授权通过 5.微信发送请求到第三方应用redirctUrl(第2步填写redirct_uri参数),返回凭证code与state(第2步自定义)

http://host/redirct_uri?code=0217a07e9c194dbf539c45c266b2dcfZ&state=state

6.第三方应用获取到code之后,根据code获取accessToken

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
参数是否必须说明appid是应用唯一标识,在微信开放平台提交应用审核通过后获得secret是应用密钥AppSecret,在微信开放平台提交应用审核通过后获得code是填写第一步获取的code参数grant_type是填authorization_code

返回参数

参数说明access_token接口调用凭证expires_inaccess_token接口调用凭证超时时间,单位(秒)refresh_token用户刷新access_tokenopenid授权用户唯一标识scope用户授权的作用域,使用逗号(,)分隔

7.根据accessToken获取用户信息

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

返回参数

参数说明openid普通用户的标识,对当前开发者帐号唯一nickname普通用户昵称sex普通用户性别,1为男性,2为女性province普通用户个人资料填写的省份city普通用户个人资料填写的城市country国家,如中国为CNheadimgurl用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空privilege用户特权信息,json数组,如微信沃卡用户为(chinaunicom)unionid用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。

8.对用户信息进行处理(用户是否第一次登录,保存用户信息,自定义token,session处理等) 9.返回结果(步骤1对应url或者重定向到首页)

至此,微信OAuth2授权登录过程结束 具体细节请参考微信开发平台-移动应用授权登录

关注
打赏
1665194163
查看更多评论
立即登录/注册

微信扫码登录

0.0774s