
1) 【一句话结论】采用集中式身份认证(如OAuth2+OpenID Connect)作为统一认证入口,结合分布式会话管理(Redis集群)实现跨校区会话同步,通过CDC或定时任务保证用户数据一致性,确保用户在任意校区登录后,会话状态和数据同步。
2) 【原理/概念讲解】统一认证的核心是**身份提供者(IdP)与服务提供者(SP)**的分离:IdP负责用户身份验证(如密码、短信、人脸等),SP负责应用授权。跨校区登录时,用户访问任意校区的SP,通过IdP验证后,获取访问令牌(如JWT)。会话同步方面,使用Redis作为共享会话存储,所有校区的SP读取Redis中的会话数据,实现会话状态同步。用户数据一致性通过数据库的分布式事务或CDC(如Debezium)实现,当用户信息变更时,实时同步到所有校区的数据库实例。
类比:IdP就像学校的“总教务处”,负责验证学生身份;SP就像各个校区的“图书馆”,需要验证学生身份才能借书;Redis就像一个共享的“借书记录本”,所有校区都能看到学生的借书状态;数据同步就像总教务处更新学生信息后,所有校区的教务系统都能实时看到,保证信息一致。
3) 【对比与适用场景】
| 方案 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| Session复制 | SP将用户Session存储到集中式存储(如Redis),所有SP读取该存储 | 依赖中心存储,会话状态集中管理 | 对会话状态一致性要求高的场景(如银行、政务) | 网络延迟可能导致会话不一致,中心存储单点故障风险 |
| JWT(Token) | SP生成包含用户信息的JWT,用户携带Token访问资源 | 无状态,Token内嵌用户信息 | 对性能要求高,会话状态不敏感的场景(如电商、社交) | Token过期后需重新认证,数据量较大时可能影响性能 |
4) 【示例】用户在A校区登录流程:
数据同步示例:当用户在A校区修改个人信息(如电话),数据库触发CDC,将变更事件发送到消息队列(如Kafka),所有校区的数据库实例消费消息并更新本地数据。
5) 【面试口播版答案】面试官您好,针对多校区用户统一认证系统,核心方案是采用集中式身份认证(如OAuth2+OpenID Connect)结合分布式会话管理(Redis集群),并通过CDC保证数据一致性。具体来说,用户在任意校区登录时,通过身份提供者(IdP)验证身份,获取访问令牌(JWT),所有校区的服务提供者(SP)共享Redis中的会话数据,实现会话同步。用户数据通过数据库的CDC或定时同步,确保各校区数据一致。这样用户在A校区登录后,B校区的系统也能看到最新的用户信息,且登录状态同步。
6) 【追问清单】
7) 【常见坑/雷区】