第一阶段:架构愿景与业务架构设计 (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)
- 用户凭据 -> 认证中心 -> (验证) -> 写
Session
、生成Token
。 - 客户端应用 -> 携带
Token
-> 认证中心 -> (验证Token
) -> 返回User
信息。 - 任何操作 -> 写
Audit Log
。
第三阶段:应用架构设计 (Application Architecture)
这里我们采用基于标准协议(OAuth 2.0 / OpenID Connect)的中心化认证服务模式。
3.1 系统组件划分 (Component Diagram)
我们将系统分解为以下几个核心微服务,其交互关系如下图所示,它清晰地展示了用户登录、令牌验证及资源访问的完整流程:
-
统一认证中心 (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等敏感信息使用Vault或Kubernetes 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、成功率、延迟等核心指标。
总结:架构决策的核心要点
- 标准优于自定义:坚决采用OIDC等工业标准,避免闭门造车,保证系统的开放性、安全性和可维护性。
- 中心化治理:认证和授权逻辑必须集中在IdP,客户端应用必须“轻量化”,杜绝各自实现安全逻辑。
- 安全第一:从协议、传输、存储、运维等多个层面构建纵深防御体系。
- 非功能需求驱动:高可用、高性能、可扩展性不是事后才考虑的,而是架构设计的初始输入。
- 演进式设计:通过清晰的路线图分步实施,快速交付价值,并在过程中不断迭代优化。