第一阶段:架构愿景与业务架构设计 (Architecture Vision & Business Architecture)

任何架构的起点都必须是业务目标和需求。

1.1 核心业务目标 (Business Goals)
  • 提升用户体验:用户一次登录,即可无缝访问集团下所有子公司的官网和应用,无需重复输入密码。
  • 强化品牌统一性:统一的登录入口和体验,强化集团的整体品牌形象。
  • 降低运营成本:减少因密码重置、账号管理带来的IT支持成本。
  • 赋能业务创新:为未来整合用户数据、实现精准营销和个性化服务提供统一的身价认证基石。
  • 提升安全性:集中进行安全审计和风险控制,避免各个子系统出现安全短板。
1.2 业务用例与用户旅程 (Business Use Cases & User Journey)
  • 用户:访问A公司官网,点击登录,跳转到统一登录中心,登录后自动返回A官网且已登录状态。再访问B公司官网,直接已是登录状态。
  • 管理员:在统一后台管理所有用户账号、权限、审计日志。
  • 开发人员:新应用只需简单集成SDK,即可快速获得登录能力,无需自行开发认证模块。
1.3 业务能力映射 (Business Capability Mapping)

识别出需要构建或增强的核心业务能力:

  • 身份认证能力
  • 集中授权能力
  • 用户生命周期管理能力
  • 安全审计与风险控制能力

第二阶段:数据架构设计 (Data Architecture)

数据是身份系统的核心资产。

2.1 核心数据实体 (Core Data Entities)
  • User (用户):核心身份信息(UserID, 用户名, 手机号/邮箱, 密码哈希, 状态)。
  • Application (应用):注册到SSO系统的客户端应用信息(AppID, AppSecret, 回调地址, 权限范围)。
  • Session (会话):用户的登录会话状态(SessionID, UserID, 登录时间、过期时间、设备信息)。
  • Token (令牌):颁发的认证令牌(Access Token, Refresh Token, 关联UserID, scope, 过期时间)。
  • Audit Log (审计日志):所有关键操作的日志(时间、用户、操作、结果、IP地址)。
2.2 数据流设计 (Data Flow)
  1. 用户凭据 -> 认证中心 -> (验证) -> 写Session、生成Token
  2. 客户端应用 -> 携带Token -> 认证中心 -> (验证Token) -> 返回User信息。
  3. 任何操作 -> 写Audit Log

第三阶段:应用架构设计 (Application Architecture)

这里我们采用基于标准协议(OAuth 2.0 / OpenID Connect)的中心化认证服务模式。

3.1 系统组件划分 (Component Diagram)

我们将系统分解为以下几个核心微服务,其交互关系如下图所示,它清晰地展示了用户登录、令牌验证及资源访问的完整流程:

1. 访问受保护页面
2. 重定向至登录页
3. 提交凭据
4. 验证凭据
5. 颁发授权码, 重定向回SP
6. 携带授权码请求SP
7. 用授权码请求Token
8. 返回Access/ID Token
9. 创建本地会话, 返回资源
用户
集团官网/应用
Service Provider
统一认证中心
Identity Provider
用户/会话/令牌数据库
  • 统一认证中心 (Identity Provider - IdP)

    • 认证端点 (Auth Endpoint):处理登录请求,渲染登录页面。
    • 令牌端点 (Token Endpoint):交换授权码、颁发令牌(Access Token / Refresh Token)。
    • 用户信息端点 (UserInfo Endpoint):根据Access Token返回用户身份信息。
    • JWK 端点:提供公钥,用于验证JWT签名。
    • 管理端点:提供应用注册、用户管理等API(内部使用)。
  • 客户端应用 (Service Provider - SP)

    • 即各个集团官网和需要接入的内部系统。
    • 集成轻量级SDK(例如:OIDC Client),负责:
      • 拦截未认证请求。
      • 重定向到IdP。
      • 处理回调,换取Token。
      • 验证Token并建立本地会话。
  • 后台管理系统

    • 为用户、应用、权限提供图形化管理界面。
3.2 协议选型 (Protocol Selection)
  • OAuth 2.0:作为授权框架,提供获取令牌的标准流程。
  • OpenID Connect (OIDC):在OAuth 2.0之上构建的身份层,提供标准的身份认证功能(ID Token)和用户信息接口。这是我们实现SSO的核心协议
  • JWT (JSON Web Token):作为令牌格式,具备自包含、可验证、防篡改的特性。

第四阶段:技术架构设计 (Technology Architecture)

4.1 技术栈选型 (Technology Stack)

这是一个基于现代云原生和微服务理念的参考技术栈:

组件推荐技术选型说明
IdP 后端Spring Authorization Server强烈推荐。Spring生态官方项目,对OAuth 2.1和OIDC支持完善,高度可定制,符合Java技术栈现状。
IdP 前端React / Vue.js + Ant Design构建现代化、响应式的登录和管理界面。
API 网关Spring Cloud Gateway / Nginx路由、限流、安全防护的统一入口。
数据库MySQL / PostgreSQL存储用户、应用等核心数据,满足ACID。
缓存Redis必选项。存储用户会话(Session)、令牌黑名单,极致性能。
日志与监控ELK Stack (Elasticsearch, Logstash, Kibana) / Prometheus + Grafana集中日志收集、性能监控和告警。
4.2 部署与高可用架构 (Deployment & High Availability)
  • 部署模式:采用微服务架构,每个核心组件(IdP、网关、缓存、DB)均可独立部署、扩展。
  • 高可用 (HA)
    • 所有服务无状态化设计,方便水平扩展。
    • IdP、网关等服务部署多个实例,通过负载均衡器(如Nginx、F5) 对外提供服务。
    • Redis 配置为哨兵(Sentinel)模式集群模式
    • 数据库 配置主从复制,实现读写分离和故障切换。
  • 安全性
    • 全链路HTTPS
    • 使用公私钥对对JWT进行签名(RS256),防止篡改。
    • 数据库密码、AppSecret等敏感信息使用VaultKubernetes Secrets管理,严禁硬编码。

第五阶段:实施与演进路线图 (Implementation & Evolution Roadmap)

5.1 演进路线图 (Phased Approach)
  • Phase 1 (MVP - 3个月)

    • 实现基于OIDC授权码模式的核心登录流程。
    • 接入1-2个最重要的集团官网作为试点。
    • 实现基本的用户管理(增删改查)。
    • 技术栈固化:Spring Authorization Server + Redis + MySQL。
  • Phase 2 (增强 - 后续3个月)

    • 开发完整的后台管理系统。
    • 接入所有剩余官网和内部系统。
    • 增加多因素认证(MFA) 功能(如短信/邮箱验证码)。
    • 实现完整的审计日志功能。
  • Phase 3 (未来)

    • 对接企业微信、AD/LDAP等第三方身份源
    • 实现风险行为检测(异常登录报警)。
    • 探索无密码认证(Passwordless)
5.2 治理与保障 (Governance)
  • 成立架构评审委员会(ARB):所有接入SSO的应用必须通过安全性和协议合规性评审。
  • 制定接入规范:提供详细的SDK集成文档API文档,降低接入成本。
  • 建立监控大盘:实时监控登录QPS、成功率、延迟等核心指标。

总结:架构决策的核心要点

  1. 标准优于自定义:坚决采用OIDC等工业标准,避免闭门造车,保证系统的开放性、安全性和可维护性。
  2. 中心化治理:认证和授权逻辑必须集中在IdP,客户端应用必须“轻量化”,杜绝各自实现安全逻辑。
  3. 安全第一:从协议、传输、存储、运维等多个层面构建纵深防御体系。
  4. 非功能需求驱动:高可用、高性能、可扩展性不是事后才考虑的,而是架构设计的初始输入。
  5. 演进式设计:通过清晰的路线图分步实施,快速交付价值,并在过程中不断迭代优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/919553.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/919553.shtml
英文地址,请注明出处:http://en.pswp.cn/news/919553.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025世界机器人大会:中国制造“人形时代”爆发

2025世界机器人博览会8月8日在北京亦庄开幕,主题为“让机器人更智慧,让具身体更智能”,汇聚全球200余家企业、1500余件展品,其中首发新品超100款,人形机器人整机企业参展数量创同类展会之最。 除了机器人本体外&#…

Oracle 库定期备份表结构元数据信息至目标端备份脚本

一、背景描述当前 xxx 项目 Oracle 11g RAC 库缺少 DG,并且日常没有备份,存在服务器或存储损坏,数据或表结构存在丢失风险,在和项目组同步后,项目组反馈可对该数据库定期备份相关结构信息,如存在数据丢失&a…

wps安装后win系统浏览窗口无法查看

前提需要有安装office软件,PDF一般默认是浏览器,如果设置浏览器不行,就安装Adobe Acrobat DC软件1、按winR键,输入regedit,进入注册表2、找到路径:\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current…

Qt 中最经典、最常用的多线程通信场景

实现步骤创建工作类 (Worker):在工作线程中处理数据的对象。创建线程对象 (QThread):用来托管工作对象。连接信号槽:主线程 -> 工作线程:连接一个主窗口发出的信号到工作对象的槽,用于传递数据。工作线程 -> 主线…

【CV 目标检测】Fast RCNN模型①——与R-CNN区别

3.Fast RCNN模型 相比于R-CNN,Fast RCNN模型主要在以下三个方面进行了改进: 提高训练和预测速度 R-CNN首先从测试图中提取2000个候选区域,然后将这2000个候选区域分别输入到预训练好的CNN中提取特征。由于候选区域有大量的重叠,这…

Zookeeper学习

要精通 ZooKeeper,需要掌握其核心原理、数据模型、分布式协调机制、典型应用场景、运维管理与性能调优等方面的知识。以下是系统化的知识体系:✅ 一、ZooKeeper 基础原理ZooKeeper 是什么 分布式协调服务,提供一致性、高可用的元数据管理核心…

用TestComplete打造高效CI/CD测试流程

传统的UI测试往往受限于图形界面渲染,导致执行速度慢、资源占用高,难以适应持续集成/持续交付(CI/CD)管道的需求。自动化UI测试平台TestComplete的智能质量附加组件通过无头测试技术,为开发团队提供了一种更高效、更可…

C++ 浅拷贝 和深拷贝的知识点讲解

好问题 👍,这个就是理解 delete 的关键前置知识。 我从 C语言基础 出发,像教科书一样,从零讲给你听。1. 什么是“拷贝”? 在 C 中,当你有一个对象 A,然后写: Device_Info a; Device…

Arkts加载网页url的pdf发票黑屏问题

使用模拟器会闪退,连接真机预览正常import { HMRouter, HMRouterMgr, HMParamType, HMPageParam } from "hadss/hmrouter"; import { BaseTitle, RouterConstants } from "commonlib"; import { webview } from kit.ArkWeb; import { PDFView }…

使用 mongosh 设置 MongoDB 账号密码

可以使用 mongosh(MongoDB 6.0+ 的现代Shell)来设置账号密码。mongosh 是官方推荐的新一代MongoDB Shell工具,替代了传统的 mongo 命令。 【本人博文提到的ip均为随机生成的,不是实际的ip,仅供参考,如有雷同,纯属巧合】 使用 mongosh 设置 MongoDB 账号密码 1. 首先连…

HTML+CSS:浮动详解

在HTMLCSS布局中,浮动(float) 是一种经典的布局技术,用于控制元素在页面中的排列方式。它最初设计用于实现文字环绕图片的效果,后来被广泛用于复杂布局,但随着Flexbox和Grid的兴起,其使用场景有…

GPIO初始化及调用

下面把 HAL 库 和 标准外设库(SPL) 初始化 GPIO 点亮/熄灭 LED 的完整步骤、示例代码和常用 API 逐一说清楚。用例默认 PC13 接 LED(蓝板常见;低电平点亮,高电平熄灭——若板子相反,只把写 1/0 对调即可&am…

【GPT入门】第48课 LlamaFacotory 合并原模型与LoRA模型

【GPT入门】第48课 LlamaFacotory 合并原模型与LoRA模型1.合并原模型与LoRA训练的增量模型2. 测试模型1.合并原模型与LoRA训练的增量模型 llamafactory-cli webui 执行合并 合并后模型大小 (base) rootautodl-container-b4b04ea4f2-b5ee47d1:~# du -sh /root/autodl-tmp/mod…

Python爬虫实战:研究tumblr,构建博客平台数据采集分析系统

1. 引言 1.1 研究背景 在信息爆炸的时代,社交媒体平台已成为人们获取信息、表达观点和进行社交互动的主要渠道。这些平台上积累的海量数据包含了用户偏好、社会趋势、文化现象等丰富信息,对学术研究、市场分析、产品开发等领域具有重要价值。 Tumblr 作为一个综合性的轻博客…

集成算法学习总结

一、集成学习基础认知 核心思想:集成学习(ensemble learning)通过构建并结合多个个体学习器来完成学习任务,类似于 “多个专家共同决策”,通常比单个学习器的性能更优。其核心逻辑是利用多个学习器的优势互补&#xff…

线程安全的产生以及解决方案

线程安全原子性(Atomicity)、可见性(Visibility)、有序性(Ordering) 是保证线程安全的三大核心要素 —— 线程安全问题的本质,几乎都是这三个特性中的一个或多个被破坏导致的。操作不会被 “中途…

Spring Cloud Netflix学习笔记01

文章目录前言一、微服务概述什么是微服务?微服务与微服务架构微服务优缺点优点缺点微服务技术栈有那些?二.SpringCloud入门概述SpringCloud是什么?SpringCloud和SpringBoot的关系Dubbo 和 SpringCloud技术选型总结SpringCloud能干嘛&#xff…

专题:2025母婴行业消费洞察与分龄营养趋势报告|附40 +份报告PDF、交互图表数据汇总下载

原文链接:https://tecdat.cn/?p43654 当95后妈妈拿着计算器对比DHA纯度,当爸爸们为“防红屁屁纸尿裤”货比三家,母婴行业的风向早就变了。从“一把奶粉喂到3岁”到“按月龄定制营养包”,从“进口就好”到“看专利数据下单”&…

redhat6/centos6 配置yum源

由于RHEL6/centos6系统官方早就停止通知维护了,公司的开发服务器有比较老,发现竟然scp都没有装。。。今天配置个本地yum源,安装一下常规软件和开发环境比较简单,直接上代码1.上传一个centos6的iso文件CentOS-6.5-x86_64-bin-DVD1.…

day31 SQLITE

数据库相关函数数据库创建int sqlite3_open( const char *filename, sqlite3 **ppDb);功能:打开数据库,不存在则创建参数:const char *filename 数据库名sqlite3 **ppDb 二级指针,传出ppDb数据库的一级指…