16 OAuth2登录流程分析
上文已经简单说过,OAuth2登录的基本实现原理是:Client获取用户授权,得到令牌,通过令牌,获取用户信息(资源)。再在本地构建用户登录认证信息,维持用户会话状态,以此达到登录的目的。
下文便从源码层面进行分析
OAuth2登录从这里开始
- 点击“gitee的client”时,会发出
/oauth2/authorization/gitee-app
请求。后台会由OAuth2AuthorizationRequestRedirectFilter
处理。 OAuth2AuthorizationRequestRedirectFilter
的核心处理逻辑- 解析url中的client id
- 通过id读取配置文件中对应的信息
- 构建重定向链接
配置信息也就是在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
- 浏览器会重定向上述链接,也就是gitee的授权页面
- gitee用户授权后,会重新重定向到我们应用,链接如下:后台会由
OAuth2LoginAuthenticationFilter
处理
http://localhost:8080/login/oauth2/code/gitee-app?code=2885e6579426ae449169d4339a1f21c73a3aae3fb84e4232fde7cf2668387bf8&state=PToZKXTpmH7MlxqdC1FbEyYnKQ7kYeUavcSZ3-3-WAI%3D
OAuth2LoginAuthenticationFilter
处理逻辑- 解析请求参数
- 构建 OAuth2LoginAuthenticationToken,后续由Provider处理
- OAuth2AuthorizationCodeAuthenticationProvider 负责通过
code
获取access_token
。 - OAuth2LoginAuthenticationProvider 负责通过
access_token
获取gitee用户信息
,再构建认证信息。
最终是由SpringSecurity统一的机制,将认证信息保存在会话(默认是session)中。表明用户已经登录。
核心组件
- OAuth2AuthorizationRequestRedirectFilter
- OAuth2LoginAuthenticationFilter
- OAuth2AuthorizationCodeAuthenticationProvider
- OAuth2LoginAuthenticationProvider
16 OAuth2登录流程分析相关推荐
- Ultimate Member插件注册登录流程分析
Ultimate Member 是一个强大而灵活的WordPress插件,可以让用户在前台注册.登录.编辑个人资料等.该插件可以让你添加漂亮的用户个人资料到你的网站中,快速创建一个先进的社区. 本文我 ...
- 简书 SSH 登录流程分析
https://www.jianshu.com/p/0473f269f4a6 结合如下看,有评论说下面的总结可能有问题,可能总结反了,总结的流程原理是有参考意义的 SSH公钥登录(私钥认证)原理 ht ...
- 学习淘淘商城第八十七课(单点登录用户登录流程分析及用户登录Service层)
我们先来看下登录流程图,如下图所示. 用户登录涉及到三个部分,第一部分是淘淘商城前台工程,第二部分是单点登录服务,第三部分是Redis服务.具体流程下图已经说的很明白了,我就不再啰嗦一遍了,相比于传统 ...
- 幼麟棋牌登录流程分析
1.默认开机进入的是startScene,加载了AppStart脚本,其中有一个非常重要的方法,初始化了游戏内用到的所有管理器,另外还请求了服务器的版本信息(次要) function initMgr( ...
- 用户操作-登录流程分析
- Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据流程分析【转】
Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据&流程分析 QQ空间说说抓取难度比较大,花了一个星期才研究清楚! 代码请移步到GitHub GitHub地址:http ...
- OAuth2.0授权流程分析
Oauth2认证流程 第三方认证技术方案最主要是解决认证协议的通用标准 问题,因为要实现 跨系统认证,各系统之间要遵循一定的接口协议. OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标 ...
- 16.U-boot的工作流程分析-2440
16.U-boot的工作流程分析-2440 分析的流程: 程序入口 第一阶段程序分析 第二阶段程序分析 2440开发板: 1.uboot的入口: 要看uboot工程的入口,首先打开顶层目录的Makef ...
- 天龙源码框架分析_天龙源码分析 - 客户端登录流程
1 登录状态定义 //登录状态enumPLAYER_LOGIN_STATUS { LOGIN_DEBUG_SETTING,//! 2 登录流程采用轮回方式,在Tick中判断当前所处状态 VOID CG ...
最新文章
- 传热学c语言节点编程题_哈工大苏小红C语言编程题目第二周的答案第一二题12...
- Java设计模式(一):单例模式
- CENTOS在输入ifconfig命令时,提示没有命令的处理方法
- Redis为什么是单线程还这么快?
- 用Keil-MDK开发TQ2440裸机程序入门教程——LED流水灯实现
- 【MySQL】MySQL STRAIGHT JOIN 使用案例以及简介
- 第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图...
- 多媒体计算机的信息类型,多媒体信息主要有几种类型
- 《中国史学名著》的读后感作文2600字
- [论文阅读] SASA: Semantics-Augmented Set Abstraction for Point-based 3D Object Detection
- 滴滴开源的损失!章文嵩将离职,曾是阿里开源“赶集人”,投身开源 20 年
- Python如何进行语法检查
- 申请开通自媒体账号的署名文章
- matlab 实验七,matlab 实验七 数字填图问题
- VUEX和filer过滤器的定义
- vue列表的单独展开收起和全部展开收起
- 数据流和数据报的理解(转载)
- IPv4地址不够怎么解决
- firewalld permanent参数
- Java高效输入输出流讲解
热门文章
- 如何在电子学习 e-learning 平台学习管理系统 LMS 中集成使用 ONLYOFFICE
- @Accessors注解作用指定前缀遵守驼峰命名
- MVC+EF开发模式总结
- 最实用的chrome插件
- AHB、APB、AXI三种协议对比分析(AMBA总线)
- 如何用Sklearn画一棵决策树
- AES GCM算法实现
- 4K VMware ubuntu 虚拟设置
- 【2020-CVPR-3D人体姿态估计】Deep Kinematics Analysis for Monocular 3D Human Pose Estimation
- autocad electrical三级断路器放到多母线上不能自动适应宽度