通用登陆(上)

简介: 登陆代理服务

概览

背景

随着业务复杂性的增加,一个应用会被划分为许多子模块,这时就需要考虑为这些子模块建立共同的基础,从而来保证子模块间的无缝对接,登陆模块便是各类服务和管理系统的必备基础之一。
面对多种生产场景对认证安全的管理方式和粒度的需求,应用需要对接各种登陆协议。相对于开发人员,熟悉协议和重复性编码就成了对接登陆模块的必要工作量。
通用登陆代理服务,实现应用服务网关层(Spring Cloud Gateway)统一认证,让开发人员专注于业务开发。通用登陆代理服务接入简单,配置习惯对开发者友好,并支持主流登陆协议。

术语

  • 应用:一般spring cloud gateway的一个部署对应一个通用登录服务的一个“应用”。一个应用是使用一个固定登录方式(例如cas)的系统。
  • appCode:代表一个应用的唯一标识。
  • sso-client:是一个spring starter,通常是网关应用依赖的二方库,通过一定的配置,用于拦截请求,验证token信息。
  • sso-manager:是一个spring boot应用,用于接收sso-client的登录请求,对接不同的登录服务。
  • 登录服务:指cas server,auth server,idaas等提供登录服务的应用。

逻辑架构

通用登陆.png
公共管理:实现应用管理和协议管理
适配机制:解决登陆代理对象调用多种协议不兼容问题
回调机制:代理服务处理数据后,通过认证服务协议回调用户
模板模式:解决多种协议下,相同流程不同实现,便于扩展
存储模块:解决数据持久化、非持久化存储
SDK: java SDK
OpenAPI: 暴露HTTP接口,方便多语言集成

主要功能

image.png
上面的过程演示一个接入通用登录服务的请求过程。

  1. 前端首次访问,不带token,请求被sso-client拦截。
  2. sso-client拦截后转发到sso-manager,根据网关配置的appCode,查询当前应用的登录方式,例如图中的cas。
  3. cas将用户重定向到登录页面,登录成功。
  4. cas回调sso-mananger,sso-manager生成token。
  5. sso-manager将token返回给sso-client。
  6. sso-client返回给前端redirect信息,包含token。
  7. 前端获取到token,并redirect到微服务。
  8. 前端至此带入token,通过网关访问微服务。

目前支持的登录服务有:

  • CAS: 支持CAS协议的接入
  • IDaaS: 支持IDaaS协议的接入
  • Oauth: 支持Oauth密码模式的接入

通用登录代理(IDaaS/CAS模式)时序图

通用登录代理(IDaaS_CAS模式)时序图.jpg

通用登录代理(OAuth密码模式)时序图

image.png

相关文章
|
设计模式 JSON 架构师
你真的需要防腐层吗?DDD 系统间的7种关系梳理与实践
当提到系统间交互的时候,人们都会想到大名鼎鼎的防腐层,用来防止其他系统的模型变更对本系统造成影响。但是在实践这个模式的过程中,我们常常会遇到问题。此时我们也应该考虑下其他的系统交互方式。
27920 12
你真的需要防腐层吗?DDD 系统间的7种关系梳理与实践
|
安全 应用服务中间件 文件存储
Kerberos网络身份认证协议介绍及SMB文件系统对其的支持
本文简单介绍了Kerberos网络认证协议,以及SMB文件系统对Kerberos认证的支持。
7761 1
Kerberos网络身份认证协议介绍及SMB文件系统对其的支持
|
Rust 数据可视化 网络安全
一款高颜值、现代化的 Git 可视化管理工具
GitButler 是由 GitHub 联合创始人 Scott Chacon 开源的 Git 客户端,采用 Tauri/Rust/Svelte 构建。它支持虚拟分支、轻松提交管理、GitHub 集成、SSH 密钥管理和 AI 工具等功能,目前仅支持 macOS 和 Linux 平台。用户可以通过拖拽方式快速聚合多个分支的改动,实现灵活的跨分支操作。
|
消息中间件 存储 Java
手动实现 Spring Boot 日志链路追踪:提升调试效率的利器
【8月更文挑战第8天】在复杂的分布式系统中,日志是诊断问题、追踪系统行为的重要工具。然而,随着微服务架构的普及,服务间的调用链路错综复杂,传统的日志记录方式往往难以快速定位问题源头。今天,我们将探讨如何在不依赖外部组件(如Zipkin、Sleuth等)的情况下,手动实现Spring Boot应用的日志链路追踪,让日志定位更加便捷高效。
692 1
|
机器学习/深度学习 计算机视觉
【YOLOv11改进 - 注意力机制】GAM(Global Attention Mechanism):全局注意力机制,减少信息损失并放大全局维度交互特征
【YOLOv11改进 - 注意力机制】GAM(Global Attention Mechanism):全局注意力机制,减少信息损失并放大全局维度交互特征本文提出了一种全局注意力机制,通过保留通道和空间信息,增强跨维度的交互,减少信息损失。该机制结合3D置换与多层感知器用于通道注意力,卷积空间注意力子模块用于空间注意力。实验结果表明,在CIFAR-100和ImageNet-1K数据集上,该方法在ResNet和MobileNet上优于多种最新注意力机制。
【YOLOv11改进 - 注意力机制】GAM(Global Attention Mechanism):全局注意力机制,减少信息损失并放大全局维度交互特征
|
SQL 关系型数据库 MySQL
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
课程分类查询、课程新增、统一异常处理、统一封装结果类、JSR303校验、修改课程、查询课程计划、新增/修改课程计划
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
|
存储 Java Apache
Java“NoClassDefFoundError”解决
“Java NoClassDefFoundError”是运行时错误,表示JVM找不到某个类的定义。通常由类路径设置不当、依赖缺失或版本冲突引起。解决方法包括检查类路径、确保所有依赖正确添加及版本兼容。
1983 3
|
11月前
|
安全 UED
IM系统在体育直播网站中的重要性
IM(即时通讯)系统在体育直播平台中至关重要,提升用户体验、促进社交互动和增强平台活跃度。它支持实时互动、增强观赛氛围、构建社交网络、推送即时信息、创造商业价值并提供多元化互动体验。高并发性能、实时稳定性和用户安全是实现的关键。通过集成IM系统,平台能更好地满足观众互动需求,提升运营效益。 代码示例展示了如何在比赛数据响应中设置比赛ID、游戏ID、系列赛ID等基本信息,并检查是否有计划和关注标记。
|
人工智能 小程序 Java
【技巧】Excel加锁忘密码?一文教你破解之道!
本文介绍了两种有效解决Excel文件被加锁且遗忘密码的方法:一是通过VBA代码操作解锁;二是利用压缩文件方式解除密码保护。无论你是编程高手还是技术新手,都能找到适合自己的解决方案,轻松恢复对文件的完全控制权。此外,还提供了丰富的相关阅读资源,助你进一步提升技能。
2130 3
【技巧】Excel加锁忘密码?一文教你破解之道!
|
XML Java 数据库
"揭秘!Spring Boot日志链路追踪大法,让你的调试之路畅通无阻,效率飙升,问题无所遁形!"
【8月更文挑战第11天】在微服务架构中,请求可能跨越多个服务与组件,传统日志记录难以全局追踪问题。本文以电商系统为例,介绍如何手动实现Spring Boot应用的日志链路追踪。通过为每个请求生成唯一追踪ID并贯穿全链路,在服务间传递该ID,并在日志中记录,即使日志分散也能通过ID串联。提供了实现这一机制所需的关键代码片段,包括使用过滤器设置追踪ID、业务代码中的日志记录及Logback配置。此方案显著提升了问题定位的效率,适用于基于Spring Boot构建的微服务环境。
765 4