用户中心+-+详细设计文档.docx_第1页
用户中心+-+详细设计文档.docx_第2页
用户中心+-+详细设计文档.docx_第3页
用户中心+-+详细设计文档.docx_第4页
用户中心+-+详细设计文档.docx_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录1 引言21.1 编写目的21.2 背景21.3 专用术语定义22 系统需求22.1 业务场景22.1.1 免登22.1.2 UDB32.1 数据迁移需求33 设计方案33.1 系统结构33.2 模块划分43.2.1 UDB模块43.2.2 免登录模块54 详细设计74.1 接口设计74.1.1 内部接口设计 UDB模块 免登录模块94.1.2 外部接口设计 对外提供的接口 需要依赖的外部接口 接口返回结果的设计104.2 数据迁移144.2.1 数据迁移说明144.2.2 方案描述144.2.3 数据库设计144.3 缓存设计144.3.1 采用技术144.3.2 详细方案144.4 安全级别设计15用户中心详细设计1 引言1.1 编写目的本详细设计说明书是针对用户中心系统而编写的,主要目的是描述清楚系统的详细设计,明确系统的结构、模块的划分、各个模块的功能,并确定实现系统所需的各种细节,以及各个相关开发实现人员的职责范围,协调不同部门之间的协同工作,以便所有实现者可以根据本文档直接着手进行自己相应开发任务。1.2 背景系统名称:用户中心简介:用户中心是一个将阿里巴巴中文站、国际站、ITBU各产品线等用户整合在一起的,提供统一的用户相关操作功能,包括中文站、国际站到ITBU对用户透明的免登功能、用户信息查询功能等,以为所有阿里巴巴的用户提供更好的用户体验,连同计费中心、产品中心等,共同成为阿里巴巴“建国大业”项目的重要组成部分,是阿里巴巴未来十年战略起步的重要基础建设。系统可能的主要开发者、相关者:阿里巴巴ITBU、ITBU各产品线、中文站(CCBU)、国际站(ICBU)等。1.3 专用术语定义文档中出现的longid均指memberid,site指domain2 系统需求2.1 业务场景2.1.1 免登n 从ICBU/CCBU免登录到ITBU(单向)一个在ICBU/CCBU已经登录成功的用户,点击ICBU/CCBU网站页面或ITBU页面上的一个链接,直接免登录到ITBU,而不需要再次登录。n 从旺旺聊天面板免登录到ITBU用户点击阿里旺旺聊天窗口内的一个链接,能直接免登录到ITBU,不需要重新登录一次。2.1.2 UDBn 由业务模块远程调用用户信息相关接口由业务模块,比如ITBU的E网打进、外贸版等产品线的业务通过远程调用UDB模块的接口,来查询用户状态,包括以下各种功能:1. 查询当前登录用户的会话信息2. 获取用户信息资料3. 注册CCBU/ICBU新用户4. 用户登录(校验用户名和密码)5. 一个已经登录的用户进行手动登出系统的操作支持6. ITBU提供对对用户透明的在CCBU/ICBU修改用户资料、修改密码、用户登录和查看用户资料的功能n 系统内部免登录模块和UDB模块之间的访问UDB模块需要提供给免登录模块相应的用户登录接口2.1 数据迁移需求由于在此之前已经有用户系统,新的用户中心的开发需要考虑新老数据的迁移问题,必须将原有的数据安全、平滑地迁移到新系统中来。3 设计方案3.1 系统结构用户免登一共分3模块,ITBU模块,CCBU/ICBU模块,Token Service模块。具体模块关系图如图3-1:图3-1具体模块关系3.2 模块划分3.2.1 UDB模块登录流程:1. 根据siteid,loginid匹配唯一的userid,若userid不存在就创建一个;2. 将userid, siteid,loginid,还有当前时间戳等信息组合,通过加密算法生成当前的登录上下文信息;3. 将登录上下文信息保存到response的cookie中,在客户端记录以方便后期的查询。、图3-2UDB用户登录模块流程图3.2.2 免登录模块该模块主要解决用户从CCBU/ICBU网站免登到ITBU页面模块。主要采用token+签名机制保证免登的安全性。CCBU/ICBU 和Token Service,ITBU3个模块分别部署在3台不同应用上。token目前保存在MemCached中,外部访问全部走https.免登步骤与事例如下:1. 用户Browser CCBU/ICBU eg: /xxx/tgs?toURL=xxx2. 传参校验,生成保存token至Memcached.3. 用户Browser ITBU eg: /xxx/tvs?token=xxxx&sign=xxxx4. token, ip, ref参数校验,从MemCached中取ip, ref 跟当前Request的ip,ref做参数校验 5. 用户Browser 钱掌柜/外贸版/E网打尽 eg: /图3-3用户免登录模块顺序图图3-4用户免登录模块流程图4 详细设计4.1 接口设计4.1.1 内部接口设计 UDB模块.1.1 AuthCookie内容设计Auth cookie用来存放 udb 的sessionid,保存格式:cookie名称:udb:az存放内容:1. Siteid2. Loginid3. Userid4. 用户显示名称将以上三个数据用AES的方式加密压缩后存储在Cookie中sid之前加上名称前缀udb,防止该cookie的值被业务模块不小心覆盖。public interface IUserService /* * 获得当前的登录用户信息 * param request* return AuthCookie */ public AuthCookie getAuthCookie (HttpServletRequest request); /* * 根据userId获取用户资料 * param userId* return UserProfileResult */ public UserProfileResult getUserProfileByUserId(String userId); /* * 根据siteid,loginid和用户资料注册新用户 * param siteid * param loginid * param profile* return UserResult */public UserResult register(String siteid, String loginid, Map profile);/* * 通过用户的loginid、siteid和密码验证用户的有效性 * param siteid * param loginid * param passwd* return UserResult */public UserResult validate(String siteid, String loginid, String passwd);/* * 根据siteid和loginid查询对应的userid * param siteid * param loginid* return UserResult */public UserResult getUserIdByLongId(String siteid, String loginid);/* * 根据userid查询对应的longid(siteid和loginid) * param userid* return LongIdResult,包含:* 1、一个String类型的siteid* 2、一个String类型的loginid* 3、一个int类型code,表明状态*/public LongIdResult getLongIdByUserId(String userid); 免登录模块1. Token Service内部接口 /* 目标URL的白名单校验* param toURL 目标地址*/private boolean validateURL( String toURL); /* 生成token,sign并存入MemCached* param ip 发起端ip* param ref 发起端具体url地址* param site 网站标识* param toURL 目标端url* return Map null则失败,否则返回(token:xxxx,sign:xxx)*/private Map generateAndSaveToken(String ip,String ref,String site,String toURL,String sign) /* 删除token从MemCached* param toURL 目标地址*/private boolean deleteToken( String token);4.1.2 外部接口设计 对外提供的接口.1 UDB模块.2 免登录模块Token Service提供以下2个REST接口服务:public interface ITokenService /* * 校验目标URL * 生成并保存Token* return TgResult */public TgResult generateTvsURL(String loginId,String site, String toURL,String ref,String ip); /* * 根据传入token,ip,ref校验正确性,传入token在MemCache查询各个参数,再进行 参数比对. * param token * param sign * param ip * param ref* return TvResult */ public TvResult validate(String token, String ip, String ref, String sign); 需要依赖的外部接口.1 CCBU/ICBU需提供的接口n 获取用户资料n 注册用户n 密码验证n 判断用户名 接口返回结果的设计TgResult 对象设计public class TgResult public final static int SUCCESS = 0;public final static int INVALID_TOURL = 1;public final static int MEMCACHED_COMMUNICATED_ERROR =2;public final static int INVALID_TVS_URL = 3;private int resultCode;private String tvsURL;private String message;public int getResultCode() return resultCode;public void setResultCode(int resultCode) this.resultCode = resultCode;public String getTvsURL() return tvsURL;public void setTvsURL(String tvsURL) this.tvsURL = tvsURL;public String getMessage() return message;public void setMessage(String message) this.message = message;TvResult 对象设计public class TvResult public final static int SUCCESS = 0;public final static int INVALID_IP = 1;public final static int INVALID_REF = 2;public final static int INVALID_TOKEN = 3;public final static int INVALID_SIGN = 4;public final static int MEMCACHED_COMMUNICATED_ERROR =5;private int resultCode;private String loginId;private String site;private String toURL;private String message;public int getResultCode() return resultCode;public void setResultCode(int resultCode) this.resultCode = resultCode;public String getLoginId() return loginId;public void setLoginId (String loginId) this.loginId = loginId;public String getSite() return site;public void setSite(String site) this.site = site;public String getToURL() return toURL;public void setToURL(String toURL) this.toURL = toURL;public String getMessage() return message;public void setMessage(String message) this.message = message;AuthCookie 对象设计public class AuthCookie private String siteId;private String loginId;private String userId;public int getSiteId() return siteId;public String getLoginId() return loginId;public String getUserId() return userId;UserResult 对象设计public class UserResult private int code;private String userId;public String getCode() return code;public String getUserId() return userId;LongIdResult 对象设计public class LongIdResult private String code;private String siteId;private String loginId;public String getCode() return code;public String getSiteId() return userId;public String getLoginId() return loginId;4.2 数据迁移4.2.1 数据迁移说明在系统上线之前,需要将原udb的数据库中的us

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论