Oauth2流程解释及其SpringBoot代码

Oauth2验证流程图(画图软件ProcessOn

流程难点解释

  • 因为其openid是独一无二的,所以在服务器第一次得到openid时,可以根据openid查询数据库是否该用户存在,如存在则直接放行;
    若是用户第一次登录,则需要再次拿着令牌去服务器申请用户信息并加入到数据库中;
  • 由于后端是restful风格接口,因此不请求后端接口,请求前端接口
    nginx配置会按照api路径转发到相应地方,/api开头的路由到后端,/websocket开头会路由到websocket,其他路径路由到前端

具体步骤

第一步 申请授权码

请求地址:官方授权链接

参数说明

参数 是否必须 说明
appid 应用的唯一ID
redirect_uri 接收授权码的地址。需要用对链接进行编码:Python3中使用urllib.parse.quote;Java中使用URLEncoder.encode,即/api/user/account/receive_code/
scope 申请授权的范围
state 用于判断请求和回调的一致性,授权成功后后原样返回。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数(如果是将第三方授权登录绑定到现有账号上,那么推荐用随机数 + user_id作为state的值,可以有效防止CSRF攻击)

返回说明
用户同意授权后会重定向到redirect_uri,返回参数为codestate。链接格式如下:

redirect_uri?code=CODE&state=STATE
如果用户拒绝授权,则不会发生重定向。

第二步 申请授权令牌access_token和用户的openid

请求地址:官方请求地址

第三步 申请用户信息

请求地址:官方请求地址

posted @ 2022-11-08 14:41  似是笼中雀  阅读(100)  评论(0)    收藏  举报