通用登陆(上)

简介: 登陆代理服务

概览

背景

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

相关文章
|
5月前
|
SQL 人工智能 分布式计算
从工单、文档到结构化知识库:一套可复用的 Agent 知识采集方案
我们构建了一套“自动提取 → 智能泛化 → 增量更新 → 向量化同步”的全链路自动化 pipeline,将 Agent 知识库建设中的收集、提质与维护难题转化为简单易用的 Python 工具,让知识高效、持续、低门槛地赋能智能体。
1091 36
|
3月前
|
人工智能 监控 安全
小红书 AI自动化运营指南!OpenClaw(Clawdbot)零基础部署+小红书Skill集成+阿里云百炼API配置及避坑指南
在内容创作与账号运营竞争日益激烈的2026年,小红书运营面临着“选题难、创作久、互动繁、数据跟踪累”的共性痛点。传统运营模式下,单篇笔记从选题、文案撰写、配图制作到发布互动,往往需要4小时以上,长期日更对个人精力是巨大挑战。而OpenClaw(原Clawdbot)凭借强大的技能扩展生态与自动化执行能力,可搭建起“选题分析→内容生成→批量发布→互动管理→数据分析”的全流程小红书运营流水线,仅需一句指令即可启动自动化运营,24小时不间断维护账号,大幅降低运营成本。
2781 2
|
4月前
|
人工智能 前端开发 IDE
AI 原生研发范式:从“代码中心”到“文档驱动”的演进
本文讲述在 AI 编程时代,通过 SDD解决上下文腐烂、审查瘫痪、维护断层三大工程失序问题,并提供一套轻量、可落地的人机协作 SOP。
AI 原生研发范式:从“代码中心”到“文档驱动”的演进
|
4月前
|
监控 应用服务中间件 nginx
别再手写 Nginx 配置了!用 Nginx UI 图形化管理你的 Web 服务!
Nginx UI 是一款轻量级图形化管理工具,让 Nginx 配置告别手写与 reload 煎熬。支持站点管理、反向代理、HTTPS 一键申请/续期、日志查看、配置版本回滚与语法校验,Docker 一键部署,适配单机及集群,真正将 Nginx 变成“可视化管家”。
1153 3
|
5月前
|
人工智能 JSON 前端开发
|
Rust 数据可视化 网络安全
一款高颜值、现代化的 Git 可视化管理工具
GitButler 是由 GitHub 联合创始人 Scott Chacon 开源的 Git 客户端,采用 Tauri/Rust/Svelte 构建。它支持虚拟分支、轻松提交管理、GitHub 集成、SSH 密钥管理和 AI 工具等功能,目前仅支持 macOS 和 Linux 平台。用户可以通过拖拽方式快速聚合多个分支的改动,实现灵活的跨分支操作。
|
消息中间件 存储 Java
手动实现 Spring Boot 日志链路追踪:提升调试效率的利器
【8月更文挑战第8天】在复杂的分布式系统中,日志是诊断问题、追踪系统行为的重要工具。然而,随着微服务架构的普及,服务间的调用链路错综复杂,传统的日志记录方式往往难以快速定位问题源头。今天,我们将探讨如何在不依赖外部组件(如Zipkin、Sleuth等)的情况下,手动实现Spring Boot应用的日志链路追踪,让日志定位更加便捷高效。
919 1
|
存储 Java Apache
Java“NoClassDefFoundError”解决
“Java NoClassDefFoundError”是运行时错误,表示JVM找不到某个类的定义。通常由类路径设置不当、依赖缺失或版本冲突引起。解决方法包括检查类路径、确保所有依赖正确添加及版本兼容。
2528 3
|
机器学习/深度学习 人工智能 自然语言处理
Documind:开源 AI 文档处理工具,将 PDF 转换为图像提取结构化数据
Documind 是一款利用 AI 技术从 PDF 中提取结构化数据的先进文档处理工具,支持灵活的本地或云端部署。
830 8
Documind:开源 AI 文档处理工具,将 PDF 转换为图像提取结构化数据