11 KiB
11 KiB
单点登录与统一认证鉴权设计
1. 文档说明
本文档是《基础平台产品设计》的专题补充文档,用于定义基础平台单点登录、统一 Token 认证鉴权、Token 刷新、登录注销、当前登录用户信息获取和 Token 状态同步规则。
本文档阅读对象为研发部门、测试部门、产品部门和实施交付团队。
2. 产品定位
单点登录与统一认证鉴权用于支撑用户一次登录基础平台后,访问多个已授权业务应用,并统一完成所有应用的 Token 认证和鉴权。
基础平台作为统一认证中心。所有接入应用不再各自独立维护登录认证逻辑,业务应用需要根据基础平台返回的认证结果和权限结果控制用户访问。
3. 功能范围
- 用户统一登录
- 用户统一退出
- 登录状态维护
- Token 签发
- Token 校验
- Token 刷新
- Token 失效
- 应用访问鉴权
- 用户身份信息获取
- 当前登录用户信息获取
- 用户授权应用列表获取
- 用户菜单和权限获取
4. 业务规则
- 用户登录由基础平台统一完成。
- 用户登录成功后,可访问已开通且已授权的业务应用。
- 用户未登录时,不可访问任何业务应用。
- 用户访问业务应用时,业务应用必须通过基础平台完成 Token 认证鉴权。
- Token 无效、过期、被注销或用户已停用时,业务应用必须拒绝访问。
- 用户退出登录后,已登录应用应同步失效或在下一次认证时失效。
- 客户停用、用户停用、应用停用、客户未开通应用、用户未授权应用时,认证鉴权均不通过。
- 用户权限变更后,应能在合理时间内影响用户后续访问。
- 业务应用不得绕过基础平台独立放行用户访问。
5. 鉴权判断维度
基础平台认证鉴权至少需要判断:
- Token 是否有效。
- 用户是否存在且启用。
- 用户所属客户是否启用。
- 应用是否存在且启用。
- 客户是否已开通该应用。
- 用户是否拥有该应用访问权限。
- 用户是否拥有对应菜单、操作或数据范围权限。
6. 业务系统接入要求
所有接入基础平台的业务系统均需满足:
- 登录入口统一接入基础平台。
- 用户身份校验统一通过基础平台。
- Token 认证鉴权统一通过基础平台。
- 菜单、权限、数据范围以基础平台授权结果为准。
- 业务系统可保留自身业务权限补充规则,但不得与基础平台授权结果冲突。
7. 统一登录流程
统一登录流程用于解决用户登录入口、Token 源头、门户登录态统一问题。用户只登录基础平台门户,不直接登录各业务应用。
流程步骤:
- 用户访问基础平台登录页。
- 用户提交登录账号和登录凭证。
- 基础平台校验用户账号、密码或其他登录凭证。
- 基础平台校验用户状态、客户状态、默认组织状态。
- 校验通过后,基础平台生成门户登录会话并签发 Token。
- 基础平台加载当前用户基础信息、默认组织、可访问应用列表、菜单和权限。
- 用户进入基础平台统一门户主页面。
- 基础平台根据用户权限渲染头部、左侧菜单、Tab 导航栏和右侧内容区。
- 用户点击业务应用菜单时,基础平台在右侧内容区通过 iframe 打开业务应用页面。
- 基础平台将 Token 访问状态同步给 iframe 应用。
- iframe 应用使用基础平台 Token 访问自身业务接口。
流程规则:
- 用户登录必须由基础平台统一完成。
- 业务应用不得独立生成登录 Token。
- Token 的签发源头只能是基础平台。
- 登录成功后,业务应用只能在基础平台门户容器中使用基础平台签发的 Token 进行访问。
- 用户无任何授权应用时,登录成功后应提示暂无可访问应用。
- 业务应用不再提供独立登录页作为常规访问入口。
8. iframe 应用 Token 交互流程
iframe 应用 Token 交互流程用于解决业务应用嵌入基础平台后,如何获取和使用基础平台统一 Token。
流程步骤:
- 用户在基础平台左侧菜单点击某业务应用菜单。
- 基础平台校验用户是否拥有该应用和菜单访问权限。
- 校验通过后,基础平台在右侧内容区创建或激活对应 iframe 页面。
- 基础平台向 iframe 应用同步当前 Token 或可用于获取 Token 的访问状态。
- iframe 应用接收基础平台 Token 后,向基础平台进行 Token 校验或获取当前登录用户信息。
- 基础平台返回 Token 有效性、当前用户信息、当前应用权限和数据范围。
- iframe 应用根据基础平台返回结果加载业务页面。
- iframe 应用访问自身业务接口时,使用基础平台 Token 作为统一认证凭证。
流程规则:
- 业务应用只接受基础平台签发的 Token。
- 业务应用不得自行伪造、转换或替代基础平台 Token。
- iframe 应用不得要求用户再次登录。
- iframe 应用不得独立维护与基础平台冲突的登录态。
- iframe 应用每次关键访问均应确认 Token 有效性。
- 多个 iframe 应用之间不直接互相传递用户身份,以基础平台门户容器和 Token 为统一身份依据。
- 用户未通过基础平台打开业务应用时,业务应用应拒绝访问或引导到基础平台。
9. Token 刷新流程
Token 刷新流程用于解决基础平台门户中多个已打开 iframe 应用的登录状态延续和 Token 过期处理问题。
流程步骤:
- 用户已登录基础平台门户,并打开一个或多个 iframe 应用。
- 基础平台监控当前 Token 有效期。
- Token 即将过期时,基础平台发起 Token 刷新。
- 基础平台校验原登录会话、用户状态、客户状态和应用授权状态。
- 校验通过后,基础平台签发新的 Token。
- 基础平台更新门户容器中的当前 Token。
- 基础平台向已打开 iframe 应用同步 Token 刷新结果。
- iframe 应用使用新 Token 继续访问业务接口。
- 旧 Token 按规则失效或在有效期结束后失效。
流程规则:
- Token 刷新必须由基础平台完成。
- 用户停用、客户停用、应用停用、用户无应用权限时,不允许刷新 Token。
- Token 刷新后,基础平台负责向已打开 iframe 应用同步新 Token 状态。
- iframe 应用收到 Token 刷新成功结果后,应使用新 Token 访问。
- Token 刷新失败时,基础平台应统一引导用户重新登录,并使已打开 iframe 应用访问失效。
- iframe 应用不主动刷新 Token,只响应基础平台刷新结果。
10. 登录注销流程
登录注销流程用于解决用户退出基础平台后,所有已打开 iframe 应用访问状态一致失效问题。
流程步骤:
- 用户在基础平台头部用户信息区域点击退出登录。
- 基础平台确认注销操作。
- 基础平台失效当前用户门户登录会话和相关 Token。
- 基础平台向所有已打开 iframe 应用同步注销或 Token 失效状态。
- 基础平台关闭或失效所有已打开业务应用页面访问状态。
- iframe 应用清理本地临时登录状态或停止继续访问业务接口。
- 用户再次访问基础平台或业务应用时,需要重新登录基础平台。
流程规则:
- 登录注销由基础平台统一处理。
- 用户注销后,原 Token 不可继续访问业务应用。
- 基础平台负责向已打开 iframe 应用同步注销状态。
- iframe 应用发现 Token 已注销或失效时,不得继续放行访问。
- 业务应用不提供独立注销逻辑作为常规退出入口;如业务页面存在退出入口,应调用基础平台统一注销能力。
11. 当前登录用户信息获取流程
当前登录用户信息获取流程用于解决基础平台门户和 iframe 应用如何获取当前用户、组织、角色和权限信息问题。
流程步骤:
- 用户登录基础平台后,基础平台加载当前登录用户信息。
- iframe 应用打开时,通过基础平台 Token 请求当前登录用户信息。
- 基础平台校验 Token 有效性。
- 基础平台返回当前用户基础信息。
- 基础平台返回用户所属客户、默认组织、组织列表、角色列表。
- 基础平台返回当前应用下的菜单、操作权限和数据范围。
- iframe 应用根据返回结果加载业务页面和控制操作。
当前用户信息至少包括:
- 用户 ID
- 用户姓名
- 登录账号
- 手机号
- 所属客户
- 默认组织
- 可选组织列表
- 角色列表
- 可访问应用列表
- 当前应用菜单
- 当前应用操作权限
- 当前应用数据范围
流程规则:
- 当前登录用户信息必须以基础平台为准。
- 业务应用不得自行维护独立用户主档。
- 业务应用可缓存用户信息,但缓存失效和刷新规则需服从基础平台授权结果。
- 用户角色、组织、权限变更后,业务应用应能在合理时间内获取最新结果。
- iframe 应用仅获取当前应用所需的用户、权限和数据范围信息。
12. Token 信息交互同步规则
Token 信息交互同步用于规范基础平台门户容器与各 iframe 应用之间的 Token 使用关系。
同步规则:
- 基础平台是 Token 唯一签发方。
- 基础平台是 Token 唯一认证鉴权方。
- 基础平台门户容器是 Token 持有方和同步方。
- iframe 应用是 Token 使用方。
- iframe 应用需要识别 Token 有效、无效、过期、刷新、注销、无权限等状态。
- iframe 应用需要根据基础平台认证结果决定是否允许访问。
- iframe 应用需要根据基础平台返回的用户、组织、角色、权限结果进行页面和数据控制。
- 用户在基础平台注销后,所有 iframe 应用再次访问时必须感知 Token 已失效。
- 用户权限变更后,iframe 应用应在下次鉴权、Token 状态同步或重新获取用户信息时同步变化。
- 已打开 iframe 应用的 Token 状态由基础平台门户容器统一管理。
异常处理规则:
- Token 不存在:基础平台门户引导用户登录。
- Token 无效:基础平台门户拒绝访问并引导重新登录。
- Token 过期且可刷新:基础平台门户统一刷新 Token,并同步给 iframe 应用。
- Token 过期且不可刷新:基础平台门户引导重新登录,并使已打开 iframe 应用访问失效。
- 用户无应用权限:提示无权限访问。
- 用户无菜单权限:不展示对应菜单。
- 用户无操作权限:不展示或禁用对应操作。
13. 验收标准
- 用户一次登录后,可访问多个已授权应用。
- 未授权应用不可访问。
- Token 无效或过期时,业务应用拒绝访问。
- 用户停用、客户停用、应用停用后,业务应用拒绝访问。
- 用户退出后,再访问业务应用需要重新登录。
- 各业务应用均通过基础平台完成 Token 认证鉴权。
- Token 即将过期或已过期但允许刷新时,由基础平台门户统一刷新 Token。
- Token 刷新成功后,已打开 iframe 应用使用新 Token 继续访问。
- Token 刷新失败后,基础平台门户引导用户重新登录。
- 用户注销后,所有已打开 iframe 应用访问状态失效。
- 当前用户信息获取结果包含用户、客户、默认组织、组织列表、角色、可访问应用、菜单、操作权限和数据范围。