《(完整word版)统一用户中心详细设计方案.doc》由会员分享,可在线阅读,更多相关《(完整word版)统一用户中心详细设计方案.doc(46页珍藏版)》请在三一办公上搜索。
1、统一用户中心详细设计报告制 作 人: 日 期:2018-01 版 本:1.1目 录1 系统结构61.1 用户中心服务系统(UCS)61.2 用户中心管理系统(UMS)61.3 门户系统(Portal)71.4 业务子系统接入72 用户中心服务系统(UCS)82.1 用户中心服务系统安全性要求82.2 系统帐号传递机制82.3 登录界面82.4 功能说明92.4.1 单点登录92.4.2 会话保持102.4.3 单点退出102.4.4 组织架构同步112.4.5 消息推送112.5 数据结构112.5.1 表清单122.5.2 T_COMPANY 公司表122.5.3 T_DEPT 部门表132
2、.5.4 T_EMPL 员工表132.5.5 T_USER 用户表132.5.6 T_DICTIONARY 字典表142.5.7 T_ATTACHMENT 附件表142.5.8 UC_ACCOUNT 登录帐号表142.5.9 UC_APP 业务系统表152.5.10 UC_BUTTON 业务系统资源表152.5.11 UC_DATA 业务系统数据表152.5.12 UC_MENU 业务系统菜单表162.5.13 UC_ROLE 业务系统角色表162.5.14 UC_ROLE_COMPANY 角色公司关联表162.5.15 UC_ROLE_BUTTON 角色资源关联表162.5.16 UC_RO
3、LE_DATA 角色数据关联表172.5.17 UC_ROLE_MENU 角色菜单关联表172.5.18 UC_ROLE_EMPL 角色员工关联表172.6 用户中心提供的接口172.6.1 通用接口调用方式172.6.2 sso.login 登录182.6.3 sso.validate ticket校验192.6.4 sso.keepAlive保持用户登录状态202.6.5 sso.logout单点退出212.6.6 portal.getPageMould 获取页面统一样式222.6.7 account.checkAccount检查帐号是否可用222.6.8 account.updatePw
4、d用户修改密码232.6.9 account.resetPwd 忘记密码242.6.10 user.reg 用户注册242.6.11 user.update 用户修改252.6.12 user.findByAccessToken 根据AccessToken获取用户信息262.6.13 user.findByParentId 根据组织架构id获取用户信息262.6.14 user.findAll 查询所有用户信息272.6.15 user.findRoleByUserId 根据用户id查询用户权限282.6.16 user.findRoleByAccessToken 根据AccessToken查
5、询用户权限292.6.17 org.getDeptsByParentId 获取组织机构信息292.7 业务子系统需要实现的接口302.7.1 sso.logoutNotify 用户退出通知302.7.2 user.updateNotify 用户信息变更通知312.7.3 org.updateNotify 组织架构信息变更通知323 用户中心管理系统(UMS)333.1 应用项目管理333.1.1 基本信息管理333.1.2 菜单管理353.1.3 数据项管理353.1.4 资源项管理363.1.5 角色管理373.1.6 角色权限管理393.2 企业管理403.2.1 企业列表403.2.2
6、企业信息维护413.3 部门管理413.3.1 部门列表423.3.2 部门编辑423.4 供应商内部权限管理433.4.1 角色列表433.4.2 角色权限关联433.5 员工管理453.5.1 员工列表453.5.2 员工删除463.5.3 修改密码463.5.4 用户锁定463.5.5 员工编辑463.5.6 角色授予474 门户系统(Portal)474.1 用户登录474.1.1 登录页面484.1.2 单点登录484.1.3 会话保持484.1.4 单点退出484.2 用户主页484.2.1 主页界面494.2.2 导航菜单494.3 用户注册494.4 个人信息管理504.5 页
7、面集成方式504.6 平台服务集成504.7 消息服务集成505 微信服务号接入515.1 微信绑定515.2 微信消息推送516 业务子系统接入526.1 操作流程526.2 需要实现的接口536.2.1 单点登录536.2.2 会话保持546.2.3 单点退出546.2.4 组织架构、用户同步546.2.5 菜单权限546.2.6 数据权限556.2.7 资源权限556.2.8 消息通知556.3 针对Java应用环境的封装556.3.1 主要功能556.3.2 过滤器配置说明566.3.3 单机环境配置586.3.4 分布式环境配置581 系统结构1.1 用户中心服务系统(UCS)提供平
8、台登录界面;提供单点登录、单点退出、会话保持服务,并在传统CAS服务的功能上增加用户角色权限控制;提供第三方应用接入相关接口;提供用户、组织机构、权限相关接口;提供提醒消息服务的集成,允许业务子系统存储提醒消息,以及同步业务子系统自有消息模块中的消息1.2 用户中心管理系统(UMS) 统一用户管理使用统一身份认证平台的所有业务应用系统的全部用户,用户身份信息支持LDAP和数据库的同时存储。 统一角色管理管理统一身份认证平台本身和平台中所有应用系统中需要使用到的角色信息,系统通过用户、角色、权限机制,以及角色、用户、权限批量处理机制, 极大地方便了用户的权限分配。 统一应用管理管理纳入统一身份认
9、证平台的各应用系统的应用功能点和应用权限。 统一授权管理实现用户与角色、角色与功能的对应管理,实现菜单权限、数据权限、资源权限等多种权限分发管理。同时,实现权限策略的定制和调用,便于实现与应用流程的紧密结合。1.3 门户系统(Portal)平台主页,按角色权限提供平台整合的所有资源的入口;提供用户自身基本信息查看与维护功能;服务申请审批通过之后通知用户中心服务系统实现消息通知的接入;实现微信账号绑定,微信消息推送;1.4 业务子系统接入实现单点登录、单点退出、会话保持的接入;用户信息实时或定时从用户中心服务系统同步;实现菜单权限控制接入;实现数据权限控制接入;实现资源权限控制接入;实现消息中心
10、接入;2 用户中心服务系统(UCS)平台SSO单点登录基于标准CAS认证流程,并优化超时验证流程,增加用户权限信息。2.1 用户中心服务系统安全性要求用户中心服务系统可以使用HTTPS方式提供服务业务系统与认证服务器之间接口调用采用参数密钥校验2.2 系统帐号传递机制在用户访问应用系统之前,由统一身份认证平台生成一次性的访问Ticket票据,并将Ticket提交给应用系统,应用系统请求统一身份认证平台验证Ticket有效性,之后返回认证结果和用户身份信息给应用系统。应用系统根据验证结果确认用户身份,并分配用户权限。Ticket默认有效时间5分钟,Ticket使用一次之后自动失效。2.3 登录界
11、面用户中心服务系统提供全平台唯一的登录界面 已经登录的用户访问登录页面将自动跳转到平台首页,不允许一个浏览器在未退出时登录另一个账户。2.4 功能说明2.4.1 单点登录 1. 用户访问业务系统如果业务系统session或登录缓存中判断用户没有登录,则控制客户端浏览器跳转到用户中心服务系统(UCS)的统一登录页面;如果业务系统已经登录,则判断是否到达需要发送保持用户登录状态心跳包的时间,向认证服务器用户状态保持接口发送消息;同时,业务服务器处理自有业务,响应用户。2. 用户在用户中心服务系统登录完毕,系统记录登录信息并将浏览器跳转到业务系统服务器回跳页面,并带上url参数ticket票据3.
12、业务服务器接收ticket参数向用户中心服务系统验证ticket合法性并获取用户信息和权限信息4. 业务系统获取到用户信息,将登录信息记录session或登录缓存,标识已经登录,并根据返回的权限信息检验用户是否有操作权限;验证通过则执行相应业务操作2.4.2 会话保持用户登录成功之后,被访问的业务系统需要在当前用户有访问请求时(在线状态)每间隔一段时间(默认3分钟)向用户中心服务系统提交用户在线状态信息。保证认证服务中心能够感知到用户当前的活动状态。认证服务中心在一定时间(默认30分钟)内没有检测到用户的活动信息则判定用户状态为下线。将注销用户登录状态并通知所有业务系统注销该用户的登录状态。2
13、.4.3 单点退出与单点登录相对应,单点退出功能可以解决“单点登录”功能在方便用户的同时留下的安全隐患,用户在平台中主动下线或超时下线时,统一身份认证平台会向业务系统发起用户下线通知,告知业务系统,某用户已经下线,请销毁相关Session会话。2.4.4 组织架构同步用户在门户系统注册,注册数据通过接口保存到用户中心服务系统; 全量同步用户中心服务系统开通组织架构全量同步接口,提供给实时性要求不太高的子系统使用; 实时增量同步在用户注册、信息变更、服务申请状态变化、删除等操作之后用户中心服务系统主动通知各个子系统变更的用户数据,提供给实时性要求高的子系统使用;2.4.5 消息推送监听消息服务器
14、中的消息数据,将各个子系统通过消息中心发出的通知消息推送给绑定的微信账号。2.5 数据结构2.5.1 表清单名称注释T_COMPANY公司表T_DEPT部门表T_EMPL员工信息T_USER用户信息T_DICTIONARY字典表T_ATTACHMENT附件表UC_ACCOUNT登录账号表UC_APP业务系统UC_BUTTON资源表UC_DATA数据表UC_MENU菜单表UC_ROLE角色表UC_ROLE_COMPANY角色公司关联表UC_ROLE_BUTTON角色资源关联表UC_ROLE_DATA角色数据关联表UC_ROLE_EMPL角色员工关联表UC_ROLE_MENU角色菜单关联表2.5.
15、2 T_COMPANY 公司表名称类型主键外键必填注释COMPANY_IDvarchar(50)TRUETRUE公司idPARENT_IDvarchar(50)父idCOMPANY_NAMEvarchar(200)公司名称COMPANY_CODEvarchar(200)公司编码CREATE_TIMEdatetime创建时间ZIP_CODEvarchar(50)公司邮编ADDRESSvarchar(200)公司地址EMAILvarchar(50)公司邮箱WEB_SITEvarchar(200)公司网址FAXvarchar(50)传真TELvarchar(50)企业电话BANKvarchar(10
16、0)开户银行BANK_ACCOUNTvarchar(50)银行账户LEGAL_NAMEvarchar(50)公司法人姓名LEGAL_TELvarchar(50)公司法人联系方式2.5.3 T_DEPT 部门表名称类型主键外键必填注释DEPT_IDvarchar(50)TRUETRUE部门idPARENT_IDvarchar(50)上级部门idCOMPANY_IDvarchar(50)TRUE公司idDEPT_NAMEvarchar(200)部门名称CREATE_TIMEdatetime创建时间DEPT_CODEvarchar(200)部门编号TELvarchar(50)电话FAXvarchar
17、(50)传真ZIP_CODEvarchar(50)邮编ADDRESSvarchar(500)地址2.5.4 T_EMPL 员工表名称类型主键外键必填注释EMPL_IDvarchar(50)TRUETRUE用户idUSER_IDvarchar(50)TRUE用户idCOMPANY_IDvarchar(50)TRUE公司idDEPT_IDvarchar(50)TRUE部门idCREATE_TIMEdatetime创建时间EMPL_CODEvarchar(50)员工编号EMPL_POSITIONvarchar(50)员工职位ENTRY_TIMEdatetime入职时间2.5.5 T_USER 用户表
18、名称类型主键外键必填注释USER_IDvarchar(50)TRUETRUE用户idACCOUNT_IDvarchar(50)TRUE账号idUSER_NAMEvarchar(100)姓名CREATE_TIMEdatetime创建时间SEXnumeric(1,0)性别( 1:男,0:女)EMAILvarchar(50)邮箱MOBILEvarchar(50)手机号IDCARDvarchar(50)身份证2.5.6 T_DICTIONARY 字典表名称类型主键外键必填注释DICTIONARY_IDvarchar(50)TRUETRUE字典idDICT_CODEvarchar(50)字典编码PARE
19、NT_CODEvarchar(50)父编码DICT_NAMEvarchar(100)名称DICT_DESCvarchar(500)说明2.5.7 T_ATTACHMENT 附件表名称类型主键外键必填注释FILE_IDvarchar(50)TRUETRUE附件idGROUP_IDvarchar(50)附件组idFILE_PATHvarchar(500)附件路径FILE_NAMEvarchar(500)附件文件名FILE_SIZEnumeric(10,0)附件大小CREATE_TIMEdatetime创建时间CREATE_USERvarchar(50)创建者RECORD_TABLEvarchar(
20、100)主记录所属表2.5.8 UC_ACCOUNT 登录帐号表名称类型主键外键必填注释ACCOUNT_IDvarchar(50)TRUETRUE账号idACCOUNT_NAMEvarchar(50)登录名ACCOUNT_PASSWORDvarchar(200)密码IS_ENABLEnumeric(1,0)是否可用(0:不可用,1:可用)CREATE_TIMEdatetime创建时间OPEN_IDvarchar(50)微信idIS_PLATnumeric(1,0)是否平台用户IS_SUPPnumeric(1,0)是否是供应商用户IS_BUYnumeric(1,0)是否是采购商用户ACCOUNT
21、_TELvarchar(50)ACCOUNT_EMAILvarchar(50)2.5.9 UC_APP 业务系统表名称类型主键外键必填注释APP_IDvarchar(50)TRUETRUE业务系统idAPP_NAMEvarchar(200)业务系统名称SECRET_KEYvarchar(200)接入密钥APP_LOGOvarchar(200)首页展示logo图片INDEX_URLvarchar(200)首页地址USER_NOTIFY_URLvarchar(200)用户信息变更通知地址DEPT_NOTIFY_URLvarchar(200)组织信息变更通知地址LOGOUT_NOTIFY_URLva
22、rchar(200)单点退出通知地址2.5.10 UC_BUTTON 业务系统资源表名称类型主键外键必填注释BUTTON_IDvarchar(50)TRUETRUE资源idAPP_IDvarchar(50)TRUE子系统idBUTTON_CODEvarchar(100)资源编码BUTTON_NAMEvarchar(200)资源名称BUTTON_CLASSvarchar(200)资源分类ORDER_NUMnumeric(10,0)序号2.5.11 UC_DATA 业务系统数据表名称类型主键外键必填注释DATA_IDvarchar(50)TRUETRUEAPP_IDvarchar(50)TRUE子
23、系统idDATA_CODEvarchar(100)数据编码DATA_NAMEvarchar(200)数据名称DATA_CLASSvarchar(200)数据分类DATA_EXPRESSIONvarchar(2000)数据sqlORDER_NUMnumeric(10,0)序号2.5.12 UC_MENU 业务系统菜单表名称类型主键外键必填注释MENU_IDvarchar(50)TRUETRUEAPP_IDvarchar(50)TRUETRUE子系统idPARENT_IDvarchar(50)TRUE父idMENU_NAMEvarchar(100)菜单名称MENU_ICONvarchar(100)
24、图标MENU_URLvarchar(200)地址ORDER_NUMnumeric(2,0)排序2.5.13 UC_ROLE 业务系统角色表名称类型主键外键必填注释ROLE_IDvarchar(50)TRUETRUE角色idAPP_IDvarchar(50)TRUETRUE子系统idCOMPANY_IDvarchar(50)TRUE创建公司idROLE_NAMEvarchar(100)角色名称2.5.14 UC_ROLE_COMPANY 角色公司关联表名称类型主键外键必填注释ROLE_IDvarchar(50)TRUETRUETRUE角色idCOMPANY_IDvarchar(50)TRUETR
25、UETRUE公司id2.5.15 UC_ROLE_BUTTON 角色资源关联表名称类型主键外键必填注释BUTTON_IDvarchar(50)TRUETRUETRUE资源idROLE_IDvarchar(50)TRUETRUETRUE角色id2.5.16 UC_ROLE_DATA 角色数据关联表名称类型主键外键必填注释DATA_IDvarchar(50)TRUETRUETRUE数据idROLE_IDvarchar(50)TRUETRUETRUE角色id2.5.17 UC_ROLE_MENU 角色菜单关联表名称类型主键外键必填注释MENU_IDvarchar(50)TRUETRUETRUE菜单i
26、dROLE_IDvarchar(50)TRUETRUETRUE角色id2.5.18 UC_ROLE_EMPL 角色员工关联表名称类型主键外键必填注释ROLE_IDvarchar(50)TRUETRUETRUE角色idEMPL_IDvarchar(50)TRUETRUETRUE员工idIS_GRANTnumeric(1)TRUE是否允许授予2.6 用户中心提供的接口2.6.1 通用接口调用方式 通信协议HTTP POST 请求格式application/x-www-form-urlencoded 响应格式application/json 公用请求参数序号名称必填类型说明1secretString
27、加密验证参数使用平台给业务系统分配的接口密钥secretKey与当前时间(yyyyMMddHHmmss格式)拼接之后使用AES加密,使用十六进制编码得到的字符串 响应结构序号名称类型说明1retCodeString返回消息码2messageString返回消息描述3resultJSONJSON数据对象:下列所有接口返回数据都在此字段下(无数据返回时,无此字段) 公用响应编码编码说明000000成功700000接口令牌无效800000accessToken无效,没有相关用户信息900000异常2.6.2 sso.login 登录 功能说明接入方控制客户端浏览器跳转登录页面进行登录操作 发起方客户
28、端浏览器 请求方式浏览器跳转 请求地址/sso/login.do 请求参数参数名类型说明backurlString登录完成之后的回跳地,URLEncoder(utf-8)编码 响应参数名类型说明ticketString获取用户信息的凭证,一分钟过期,一次有效 请求示例https:/xxxxxx/sso/login.do?backurl=http%3A%2F%2Fxxx%2Fmobile 响应示例http:/xxx/mobile?ticket=0fff8d0f896e4b7094a7f98cfc35e4e92.6.3 sso.validate ticket校验 功能说明业务系统向用户中心服务系统
29、校验登录ticket是否可用,并获取用户信息 发起方业务服务器 接口地址/sso/validate.do 请求参数序号名称必填类型说明1ticketYString用户登录之后浏览器回跳地址中的ticket参数2appIdNString业务系统Id 3secretYString加密验证参数4onlySelfRoleNBoolean是否仅自有系统的权限列表 响应序号名称类型说明1accesstokenString用户接口令牌,服务端调用接口时使用2userObject用户信息2.1userIdString用户id2.2userNameString用户姓名2.3userTypeInteger用户类型
30、,员工、供应商2.4companyIdString公司id2.5deptIdString部门id2.6servicesObject申请的服务数组2.6.1serviceCodeString服务编号2.6.2serviceNameString服务名2.6.3serviceStatusInteger服务状态(1:待审核,2:审核拒绝,3:审核通过)2.7appsObject业务系统列表2.7.1appIdString业务系统id2.7.2rolesObject角色数组,包含菜单权限,数据权限,资源权限2.7.2.1roleNameString角色名2.7.2.2roleCodeString角色编码
31、2.7.2.3menusString菜单权限编号列表2.7.2.4datasObject数据权限列表2.7.2.4.1dataCodeString数据编码2.7.2.4.2dataExpressioString数据SQL片段或表达式语句2.7.2.5buttonsString资源权限编号列表 响应码表编码说明000000成功800000ticket校验失败900000服务端异常2.6.4 sso.keepAlive保持用户登录状态 功能说明保持用户登录状态 发起方PORTAL、各个接入单点登录的子系统 接口地址/sso/keepAlive.do 请求参数序号名称必填类型说明1accessTok
32、enYString用户接口令牌2secretYString加密验证参数 响应码表编码说明000000成功2.6.5 sso.logout单点退出 功能说明退出登录 发起方PORTAL、各个接入单点登录的子系统 接口地址/sso/logout.do 请求参数序号名称必填类型说明1accessTokenYString用户接口令牌2secretYString加密验证参数 响应码表编码说明000000成功2.6.6 portal.getPageMould 获取页面统一样式 功能说明获取统一的页面头、尾、菜单等HTML代码段 发起方子系统 接口地址/ portal/getPageMould.do 请求参
33、数序号名称必填类型说明1accessTokenNString用户接口令牌,不填则表示未登录2secretYString加密验证参数 响应序号名称类型说明1headString头部信息2menuString菜单信息3footObject底部信息 响应码表编码说明000000成功2.6.7 account.checkAccount检查帐号是否可用 功能说明PORTAL方账号注册时验证账号可用性 发起方PORTAL 接口地址/api/account/checkAccount.do 请求参数序号名称必填类型说明1accountYString账号2secretYString加密验证参数 响应码表编码说明
34、000000成功100000账号被占用200000账号不符合规范2.6.8 account.updatePwd用户修改密码 功能说明用户修改密码 发起方PORTAL 接口地址/api/account/updatePwd.do 请求参数序号名称必填类型说明1accessTokenYString用户接口令牌2secretYString加密验证参数 响应码表编码说明000000成功100000修改失败,原始密码错误200000新密码不符合规范2.6.9 account.resetPwd 忘记密码 功能说明通过邮箱找回密码 发起方PORTAL 接口地址/api/account/updatePwd.do
35、 请求参数序号名称必填类型说明1accountYString账号2codeYString图形验证码 响应码表编码说明000000成功100000账号不存在200000用户邮件地址无效,邮件发送失败2.6.10 user.reg 用户注册 功能说明用户注册 发起方PORTAL 接口地址/api/user/reg.do 请求参数序号名称必填类型说明1secretYString加密验证参数2accountYString用户名3passwordYString登录密码4nameYstring客户真实姓名5genderNstring性别6userTypeYInteger用户类别7deptIdYstring
36、所属部门id8birthdayNstring生日9telnoNString手机号码 响应码表编码说明000000成功100000用户名冲突200000密码不符合规范2.6.11 user.update 用户修改 功能说明用户信息修改 发起方PORTAL 接口地址/api/user/update.do 请求参数序号名称必填类型说明1secretYString加密验证参数2accessTokenYString用户接口令牌3nameYstring客户真实姓名4genderNstring性别5userTypeYInteger用户类别6deptIdYstring所属部门id7birthdayNstrin
37、g生日8telnoNString手机号码 响应码表编码说明000000成功2.6.12 user.findByAccessToken 根据AccessToken获取用户信息 功能说明根据AccessToken获取用户信息 发起方子系统 接口地址/api/user/findByAccessToken.do 请求参数序号名称必填类型说明1secretYString加密验证参数2accessTokenYString用户接口令牌 响应码表编码说明000000成功2.6.13 user.findByParentId 根据组织架构id获取用户信息 功能说明根据公司id或部门id获取用户信息 发起方子系统
38、接口地址/api/user/findByParentId.do 请求参数序号名称必填类型说明1secretYString加密验证参数2parentIdYString公司id或部门id3pageNInteger当前页码4pageSizeNInteger每页记录条数 响应码表编码说明000000成功2.6.14 user.findAll 查询所有用户信息 功能说明分页查询所有用户信息 发起方子系统 接口地址/api/user/findAll.do 请求参数序号名称必填类型说明1secretYString加密验证参数2pageNInteger当前页码3pageSizeNInteger每页记录条数 响应码表编码说明000000成功2.6.15 user.findRoleByUserId 根据用户id查询用户权限 功能说明根据用户id查询用