上文已经简单说过,OAuth2登录的基本实现原理是:Client获取用户授权,得到令牌,通过令牌,获取用户信息(资源)。再在本地构建用户登录认证信息,维持用户会话状态,以此达到登录的目的。

下文便从源码层面进行分析

OAuth2登录从这里开始

  1. 点击“gitee的client”时,会发出 /oauth2/authorization/gitee-app 请求。后台会由 OAuth2AuthorizationRequestRedirectFilter 处理。
  2. OAuth2AuthorizationRequestRedirectFilter 的核心处理逻辑
    1. 解析url中的client id
    2. 通过id读取配置文件中对应的信息
    3. 构建重定向链接


      配置信息也就是在application.yml 之中

      重定向链接如下:
https://gitee.com/oauth/authorize?response_type=code&client_id=b4faeee3e90bc756d669e252e888154fbd629f62e8a22b4a3c6b14b5d57ef84f&state=PToZKXTpmH7MlxqdC1FbEyYnKQ7kYeUavcSZ3-3-WAI%3D&redirect_uri=http://localhost:8080/login/oauth2/code/gitee-app
  1. 浏览器会重定向上述链接,也就是gitee的授权页面
  2. gitee用户授权后,会重新重定向到我们应用,链接如下:后台会由 OAuth2LoginAuthenticationFilter 处理
http://localhost:8080/login/oauth2/code/gitee-app?code=2885e6579426ae449169d4339a1f21c73a3aae3fb84e4232fde7cf2668387bf8&state=PToZKXTpmH7MlxqdC1FbEyYnKQ7kYeUavcSZ3-3-WAI%3D
  1. OAuth2LoginAuthenticationFilter 处理逻辑

    1. 解析请求参数
    2. 构建 OAuth2LoginAuthenticationToken,后续由Provider处理
    3. OAuth2AuthorizationCodeAuthenticationProvider 负责通过 code 获取 access_token
    4. OAuth2LoginAuthenticationProvider 负责通过 access_token 获取 gitee用户信息,再构建认证信息
  2. 最终是由SpringSecurity统一的机制,将认证信息保存在会话(默认是session)中。表明用户已经登录。

核心组件

  • OAuth2AuthorizationRequestRedirectFilter
  • OAuth2LoginAuthenticationFilter
  • OAuth2AuthorizationCodeAuthenticationProvider
  • OAuth2LoginAuthenticationProvider

16 OAuth2登录流程分析相关推荐

  1. Ultimate Member插件注册登录流程分析

    Ultimate Member 是一个强大而灵活的WordPress插件,可以让用户在前台注册.登录.编辑个人资料等.该插件可以让你添加漂亮的用户个人资料到你的网站中,快速创建一个先进的社区. 本文我 ...

  2. 简书 SSH 登录流程分析

    https://www.jianshu.com/p/0473f269f4a6 结合如下看,有评论说下面的总结可能有问题,可能总结反了,总结的流程原理是有参考意义的 SSH公钥登录(私钥认证)原理 ht ...

  3. 学习淘淘商城第八十七课(单点登录用户登录流程分析及用户登录Service层)

    我们先来看下登录流程图,如下图所示. 用户登录涉及到三个部分,第一部分是淘淘商城前台工程,第二部分是单点登录服务,第三部分是Redis服务.具体流程下图已经说的很明白了,我就不再啰嗦一遍了,相比于传统 ...

  4. 幼麟棋牌登录流程分析

    1.默认开机进入的是startScene,加载了AppStart脚本,其中有一个非常重要的方法,初始化了游戏内用到的所有管理器,另外还请求了服务器的版本信息(次要) function initMgr( ...

  5. 用户操作-登录流程分析

  6. Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据流程分析【转】

    Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据&流程分析 QQ空间说说抓取难度比较大,花了一个星期才研究清楚! 代码请移步到GitHub GitHub地址:http ...

  7. OAuth2.0授权流程分析

    Oauth2认证流程 第三方认证技术方案最主要是解决认证协议的通用标准 问题,因为要实现 跨系统认证,各系统之间要遵循一定的接口协议. OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标 ...

  8. 16.U-boot的工作流程分析-2440

    16.U-boot的工作流程分析-2440 分析的流程: 程序入口 第一阶段程序分析 第二阶段程序分析 2440开发板: 1.uboot的入口: 要看uboot工程的入口,首先打开顶层目录的Makef ...

  9. 天龙源码框架分析_天龙源码分析 - 客户端登录流程

    1 登录状态定义 //登录状态enumPLAYER_LOGIN_STATUS { LOGIN_DEBUG_SETTING,//! 2 登录流程采用轮回方式,在Tick中判断当前所处状态 VOID CG ...

最新文章

  1. 传热学c语言节点编程题_哈工大苏小红C语言编程题目第二周的答案第一二题12...
  2. Java设计模式(一):单例模式
  3. CENTOS在输入ifconfig命令时,提示没有命令的处理方法
  4. Redis为什么是单线程还这么快?
  5. 用Keil-MDK开发TQ2440裸机程序入门教程——LED流水灯实现
  6. 【MySQL】MySQL STRAIGHT JOIN 使用案例以及简介
  7. 第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图...
  8. 多媒体计算机的信息类型,多媒体信息主要有几种类型
  9. 《中国史学名著》的读后感作文2600字
  10. [论文阅读] SASA: Semantics-Augmented Set Abstraction for Point-based 3D Object Detection
  11. 滴滴开源的损失!章文嵩将离职,曾是阿里开源“赶集人”,投身开源 20 年
  12. Python如何进行语法检查
  13. 申请开通自媒体账号的署名文章
  14. matlab 实验七,matlab 实验七 数字填图问题
  15. VUEX和filer过滤器的定义
  16. vue列表的单独展开收起和全部展开收起
  17. 数据流和数据报的理解(转载)
  18. IPv4地址不够怎么解决
  19. firewalld permanent参数
  20. Java高效输入输出流讲解

热门文章

  1. 如何在电子学习 e-learning 平台学习管理系统 LMS 中集成使用 ONLYOFFICE
  2. @Accessors注解作用指定前缀遵守驼峰命名
  3. MVC+EF开发模式总结
  4. 最实用的chrome插件
  5. AHB、APB、AXI三种协议对比分析(AMBA总线)
  6. 如何用Sklearn画一棵决策树
  7. AES GCM算法实现
  8. 4K VMware ubuntu 虚拟设置
  9. 【2020-CVPR-3D人体姿态估计】Deep Kinematics Analysis for Monocular 3D Human Pose Estimation
  10. autocad electrical三级断路器放到多母线上不能自动适应宽度