用户单点登录

用户单点登录负责用户认证、会话保持和提供相关服务接口,用户门户服务等调用。 建立该服务主要为了解决如下问题:

1. 多个应用,每个应用都要独立开发一套用户管理体系,开发成本高,
一个需求点的开发可能导致所有应用都要进行变更
2. 认证分散,安全强度差,不用应用对于用户访问控制、密码长度、
复杂度、加密方式、存储方式的强度不太可能做到完全一致
3. 身份校验,用户需要在每个应用进行注册/登录/绑卡等操作,用户端体验差
4. 多套密码,由于用户设置多套密码,难以记录,关于密码相关的客服服务以及运维服务增加
5. 企业有多个应用,多个应用用户信息不共享,信息不连通,每个应用都是一个信息孤岛,
不利于用户登录行为分析标准不同一,密码长度、复杂度、加密方式、存储方式不统一

技术架构

技术架构图

说明

  • 技术框架与现有互金平台中各个共享中心保持一致,基于Spring Boot和HSF服务框架,支持Restful服务发布。
  • 提供HSF RPC接口供用户门户服务进行调用。
  • 会话相关数据通过redis进行存储。
  • 发布HSF服务供OpenAPI管理平台进行调用,包括登录信息查询、强制移除等。

核心流程

登录认证


sequenceDiagram 用户 ->> 用户门户平台 : 登录操作() 用户门户平台 ->> 用户管理服务 : 登录请求() 用户管理服务 ->> 用户单点登录服务 : 校验用户名密码合法性() 用户单点登录服务 -->> 用户管理服务 : 返回合法性校验结果,返回smid() 用户管理服务 ->> 用户管理服务: 完成会话创建() 用户管理服务 -->> 用户门户平台: 返回结果() 用户门户平台 -->> 用户: 返回登录后页面()

登出


sequenceDiagram 用户 ->> 用户门户平台 : 登出操作() 用户门户平台 ->> 用户管理服务 : 登出请求() 用户管理服务 ->> 用户单点登录服务 : 请求登出() 用户单点登录服务 -->> 用户管理服务 : 结果返回() 用户管理服务 ->> 用户管理服务: 注销本地会话() 用户管理服务 -->> 用户门户平台: 返回结果() 用户门户平台 -->> 用户: 返回平台首页页面()

会话检验(本地会话有效,单点登录有效)


sequenceDiagram 用户 ->> 用户门户平台 : 访问请求() 用户门户平台 ->> 用户管理服务 : 访问请求() 用户管理服务 ->> 用户管理服务 : 会话校验拦截,检验本地会话() 用户管理服务 ->> 用户单点登录服务 : 根据smid获取session信息() 用户单点登录服务 -->> 用户管理服务: 返回smid相关会话信息() 用户管理服务 -->> 用户门户平台: 返回结果() 用户门户平台 -->> 用户: 引导进入访问页面()

会话检验(本地会话有效,单点登录中会话已无效)


sequenceDiagram 用户 ->> 用户门户平台 : 访问请求() 用户门户平台 ->> 用户管理服务 : 访问请求() 用户管理服务 ->> 用户管理服务 : 会话校验拦截,检验本地会话() 用户管理服务 ->> 用户单点登录服务 : 根据smid获取session信息() 用户单点登录服务 -->> 用户管理服务: smid无效返回() 用户管理服务 ->> 用户管理服务:注销本地会话 用户管理服务 -->> 用户门户平台: 返回结果() 用户门户平台 -->> 用户: 引导进入登录页面()

会话检验(本地会话过期,单点登录中会话有效)

sequenceDiagram 用户 ->> 用户门户平台 : 访问请求() 用户门户平台 ->> 用户管理服务 : 访问请求() 用户管理服务 ->> 用户管理服务 : 会话校验拦截,检验本地会话() 用户管理服务 ->> 用户单点登录服务 : 根据smid获取session信息() 用户单点登录服务 -->> 用户管理服务: smid相关会话信息返回() 用户管理服务 ->> 用户管理服务:创建本地会话 用户管理服务 -->> 用户门户平台: 返回结果() 用户门户平台 -->> 用户: 引导进入访问页面()

会话检验(本地会话过期,单点登录中会话已无效)


sequenceDiagram 用户 ->> 用户门户平台 : 访问请求() 用户门户平台 ->> 用户管理服务 : 访问请求() 用户管理服务 ->> 用户管理服务 : 会话校验拦截,检验本地会话() 用户管理服务 ->> 用户单点登录服务 : 根据smid获取session信息() 用户单点登录服务 -->> 用户管理服务: smid无效返回() 用户管理服务 -->> 用户门户平台: 返回结果() 用户门户平台 -->> 用户: 引导进入登录页面()

results matching ""

    No results matching ""