门户网站统一登录应用鉴权架构设计
·
目录
一、核心组件
- 门户服务:统一入口和会话管理中心
- 门户登录/用户服务:负责身份认证和用户信息管理
- 门户SSO:生成和验证令牌的核心安全层
- 业务系统:最终提供具体功能的应用系统
二、登录场景对比
场景一:门户统一登录(正向流程)
- 适用情况:供应商从门户首页开始工作旅程
- 用户路径:门户首页 → 登录 → 选择业务系统
- 技术特点:集中式认证,一次登录多系统通行
场景二:业务系统直达
- 适用情况:供应商通过书签/邮件链接直接访问具体业务系统
- 用户路径:业务系统URL → 跳转认证 → 返回业务系统
- 技术特点:分布式认证,按需验证身份
三、技术架构图解

四、门户统一登录(正向流程)技术解
阶段一:门户认证
用户凭证提交:供应商在门户首页输入账号密码
安全验证:门户登录服务进行多因素认证
主令牌签发:SSO服务生成包含基础声明的JWT,并将token存储在Cookie中
阶段二:业务系统入口
1. 用户在门户主页点击业务系统入口
- 不直接携带令牌
- 访问业务系统前端主页URL(如
/index)
2. 回调SSO机制
- 业务系统前端重定向到SSO认证接口,并携带认证信息参数:
/sso/authorize?client_id=xxx&redirect_uri=/callback
- 302重定向到SSO认证中心
阶段三:SSO验证
1. SSO认证接口获取cookie中token信息,与clientId组合成新字符串,并生成加密code
2. SSO认证接口重定向到redirect_uri参数中回调地址并携带加密code
callback?code=xxx
3. 302重定向到业务系统回调地址
阶段四:业务系统回调接口获取用户信息
1. 携带code,clientId,clientSecret调用门户SSO获取accessToken接口
/sso/accessToken?code=xxx&clientid=xxx&clientSecrect=xxx
2. 门户校验clientId和clientSecret匹配,并对code进行解密获取登录用户账号缓存存储,生成加密acessToken
3. 应用系统携带accessToken调用门户用户信息接口
/sso/profile?accessToken=xx
4. 门户通过accessToken获取缓存中用户信息,返回业务系统
5. 业务系统令牌签发,建立本地会话

五、业务系统直达技术解析
当供应商直接访问业务系统时,系统会触发以下认证步骤:
关键步骤分解
1.初次拦截
- 业务系统检测无有效会话
- 生成包含
client_id和redirect_uri的认证请求 - 302重定向至SSO认证中心
2.认证环节
- SSO呈现统一登录页(与门户同源)
- 用户输入凭证后,SSO验证并生成授权码(code)
- 携带code重定向回业务系统指定回调地址
3.令牌交换
- 业务系统用code向SSO换取access_token
- 可选获取refresh_token(长期有效需谨慎)
- 通过access_token获取用户基本信息
4.会话建立
- 业务系统创建本地会话
- 关联用户权限上下文
- 返回请求的原始资源

更多推荐


所有评论(0)