OAuth2与sso的结合思路
=首次登录============================
1、用户访问A系统,A系统检查自身的session(第三方系统概念,非统一认证中心概念),发现此人未登录,转到统一认证中心登录检查接口。
2、统一认证中心检查接口,判断下sso domain下是否存在 access_token,没有表示需要进行首次登录验证。
3、跳转到登录页面,要求输入用户名,密码,验证码。
4、验证通过后,
(1)为A系统生成一个授权码authorization_code
(2)根据authorization_code+clientId+clientSecret ---->生成 access_token
(3)将access_token写入sso domain 的cookie中
(4) 将authorization_code和access_token记录到redis中。
5、将授权码authorization_code通过ReturnUri跳转给A系统.
6、A系统获取到授权码后,通过post方式验证授权码(authorization_code+clientId+clientSecret ),sso首先到redis中查找authorization_code是否存在,存在则直接返回redis中的access_token值,否则验证是不是合法授权码,正确后,生成access_token返给A系统。
7、A系统确认authorization_code正确,并获取到access_token后,可以实现自己的内部逻辑,比如记录session等。
=二次访问其它系统=====
1、用户访问B系统,B系统根据自身的检查逻辑判断,发现此人没有登录,转到统一认证中心登录检查接口。
2、统一认证中心检查接口,判断下sso domain下是否存在 access_token,存在,表示已经在其它系统中登录过了。
3、
(1)为B系统生成一个授权码authorization_code
(2)根据authorization_code+clientId+clientSecret ---->生成 access_token
(3) 将authorization_code和access_token记录到redis中。
4、将授权码authorization_code通过ReturnUri跳转给B系统.
5、B系统获取到授权码后,通过post方式验证授权码(authorization_code+clientId+clientSecret ),sso首先到redis中查找authorization_code是否存在,存在则直接返回redis中的access_token值,否则验证是不是合法授权码,正确后,生成access_token返给B系统。
6、B系统确认authorization_code正确,并获取到access_token后,可以实现自己的内部逻辑,比如记录session等。
刷新token====
1、在SSO中需要重写domain下的cookie值access_token.
2、
注销登录=====
1、各系统通过类似于redis的方式,对于access_token进行保存,以后的内部程序的访问,不必到统一认证中心检查access_token的有效性。
2、提供退出接口,方便sso进行调用,统一实现退出逻辑。调用后,删除本地的redis中access_token
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效