典型单点登录工作流程(以Web SSO为例)
1. 首次访问:用户访问应用A
2. 重定向认证:应用A发现用户未登录,重定向到认证中心
3. 用户认证:用户在认证中心登录
4. 颁发令牌:认证中心验证成功后创建令牌并返回给用户
5. 访问应用A:用户带着令牌访问应用A,应用A向认证中心验证令牌
6. 访问应用B:用户访问应用B时,应用B同样重定向到认证中心
7. 自动登录:认证中心发现已有有效会话,直接颁发令牌给应用B
这里以应用A=myBuilder为例,看看myBuilder是如何处理单点登录的规则的。
首先,myBuilder提供一个单点登录的GET请求网址,格式如下:
http://{myBuilderHost}/sso?ssoToken={ssoToken}&ssoFrom={ssoFrom}&code=base.auth&method=ssoLogin&ssoRedirect={ssoRedirect}
主要参数说明
| 参数 | 说明 |
| ssoToken | 外部系统、认证中心回传过来的token |
| ssoFrom | 外部系统、认证中心的来源标识,用于区分不同的来源,采用不同的处理规则 |
| code | 业务接口编码,定位处理单点登录的业务接口 |
| method | 业务接口方法,定位处理单点登录的业务接口方法 |
| ssoRedirect | 登录完成后跳转的地址 |
单点登录接口的处理规则如下:

1. 后台根据ssoToken参数向外部系统获取用户信息(后台验证ssoToken有效)
2. 判定用户信息在myBuilder是否存在(base_user表)
3. 如果用户不存在则创建新用户,包括:默认租户、机构、角色(该步骤实现了账号同步)
4. myBuilder用户信息存在后,创建内部token
5. 返回登录信息给myBuilder前端

以下是分配token的关键代码

单点登录信息的参数
| 参数 | 说明 |
| token | myBuilder的内部令牌 |
| userId | 用户ID,base_user表 |
| userName | 用户名,base_user表 |
| fullName | 姓名,base_user表 |
| 邮箱,base_user表 | |
| erpId | 员工号,base_user表 |
| tenantId | 租户ID,base_user表 |
| orgId | 机构ID,base_org表,base_org_user表 |
| orgCode | 机构编码,base_org表,base_org_user表 |
| orgName | 机构名称,base_org表,base_org_user表 |
token是关键返回参数

小结
以上就是myBuilder单点登录的对接过程,其中ssoFrom参数,可以判定不同系统采用不用的处理规则,保证灵活性。
185

被折叠的 条评论
为什么被折叠?



