通用登陆(上)

简介: 登陆代理服务

概览

背景

随着业务复杂性的增加,一个应用会被划分为许多子模块,这时就需要考虑为这些子模块建立共同的基础,从而来保证子模块间的无缝对接,登陆模块便是各类服务和管理系统的必备基础之一。
面对多种生产场景对认证安全的管理方式和粒度的需求,应用需要对接各种登陆协议。相对于开发人员,熟悉协议和重复性编码就成了对接登陆模块的必要工作量。
通用登陆代理服务,实现应用服务网关层(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

相关文章
|
3月前
|
SQL 人工智能 分布式计算
从工单、文档到结构化知识库:一套可复用的 Agent 知识采集方案
我们构建了一套“自动提取 → 智能泛化 → 增量更新 → 向量化同步”的全链路自动化 pipeline,将 Agent 知识库建设中的收集、提质与维护难题转化为简单易用的 Python 工具,让知识高效、持续、低门槛地赋能智能体。
674 36
|
存储 Java Apache
Java“NoClassDefFoundError”解决
“Java NoClassDefFoundError”是运行时错误,表示JVM找不到某个类的定义。通常由类路径设置不当、依赖缺失或版本冲突引起。解决方法包括检查类路径、确保所有依赖正确添加及版本兼容。
2406 3
|
消息中间件 存储 Java
手动实现 Spring Boot 日志链路追踪:提升调试效率的利器
【8月更文挑战第8天】在复杂的分布式系统中,日志是诊断问题、追踪系统行为的重要工具。然而,随着微服务架构的普及,服务间的调用链路错综复杂,传统的日志记录方式往往难以快速定位问题源头。今天,我们将探讨如何在不依赖外部组件(如Zipkin、Sleuth等)的情况下,手动实现Spring Boot应用的日志链路追踪,让日志定位更加便捷高效。
864 1
|
机器学习/深度学习 人工智能 自然语言处理
Documind:开源 AI 文档处理工具,将 PDF 转换为图像提取结构化数据
Documind 是一款利用 AI 技术从 PDF 中提取结构化数据的先进文档处理工具,支持灵活的本地或云端部署。
726 8
Documind:开源 AI 文档处理工具,将 PDF 转换为图像提取结构化数据
|
存储 API 开发工具
oss创建bucket
oss创建bucket
2554 1
|
前端开发 JavaScript 大数据
React与Web Workers:开启前端多线程时代的钥匙——深入探索计算密集型任务的优化策略与最佳实践
【8月更文挑战第31天】随着Web应用复杂性的提升,单线程JavaScript已难以胜任高计算量任务。Web Workers通过多线程编程解决了这一问题,使耗时任务独立运行而不阻塞主线程。结合React的组件化与虚拟DOM优势,可将大数据处理等任务交由Web Workers完成,确保UI流畅。最佳实践包括定义清晰接口、加强错误处理及合理评估任务特性。这一结合不仅提升了用户体验,更为前端开发带来多线程时代的全新可能。
495 1
|
存储 缓存 前端开发
性能优化:通用快照方案
性能优化对于提供卓越的用户体验至关重要,钉钉终端团队特别关注用户体验。我们团队采用了一系列创新的性能优化措施,显著提升了首次有意义绘制(FMP)和首次内容绘制(FCP)的性能指标。其中,利用快照方案,结合用户的本地存储能力,我们能够进一步提高页面性能。快照方案是在完成常规手段前端优化(如优化首屏加载体积、实施懒加载、渲染优化和缓存提升等)和资源离线处理之后的又一重要步骤,旨在更迅速地向用户展示页面内容。
431 1
|
设计模式 算法 Java
Java中的设计模式:实战案例分享
Java中的设计模式:实战案例分享
|
存储 消息中间件 算法
深入解析G1垃圾回收器
G1,全名叫:Garbage First。是垃圾收集器技术发展历史上的里程碑式的成果,开创了收集器面向局部收集的设计思路和基于Region的内存布局形式。
1117 0
深入解析G1垃圾回收器