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

下载本文档

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

文档简介

目录TOC\o"1-4"\h\z\u1引言 21.1编写目的 21.2背景 21.3专用术语定义 22系统需求 22.1业务场景 22.1.1免登 22.1.2UDB 32.1数据迁移需求 33设计方案 33.1系统结构 33.2模块划分 43.2.1UDB模块 43.2.2免登录模块 54详细设计 74.1接口设计 74.1.1内部接口设计 7UDB模块 7免登录模块 94.1.2外部接口设计 9对外提供的接口 9需要依赖的外部接口 10接口返回结果的设计 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免登从ICBU/CCBU免登录到ITBU(单向)一个在ICBU/CCBU已经登录成功的用户,点击ICBU/CCBU网站页面或ITBU页面上的一个链接,直接免登录到ITBU,而不需要再次登录。从旺旺聊天面板免登录到ITBU用户点击阿里旺旺聊天窗口内的一个链接,能直接免登录到ITBU,不需要重新登录一次。2.1.2UDB由业务模块远程调用用户信息相关接口由业务模块,比如ITBU的E网打进、外贸版等产品线的业务通过远程调用UDB模块的接口,来查询用户状态,包括以下各种功能:查询当前登录用户的会话信息获取用户信息资料注册CCBU/ICBU新用户用户登录(校验用户名和密码)一个已经登录的用户进行手动登出系统的操作支持ITBU提供对对用户透明的在CCBU/ICBU修改用户资料、修改密码、用户登录和查看用户资料的功能系统内部免登录模块和UDB模块之间的访问UDB模块需要提供给免登录模块相应的用户登录接口2.1数据迁移需求由于在此之前已经有用户系统,新的用户中心的开发需要考虑新老数据的迁移问题,必须将原有的数据安全、平滑地迁移到新系统中来。3设计方案3.1系统结构用户免登一共分3模块,ITBU模块,CCBU/ICBU模块,TokenService模块。具体模块关系图如图3-1:图3-1 具体模块关系3.2模块划分3.2.1UDB模块登录流程:根据siteid,loginid匹配唯一的userid,若userid不存在就创建一个;将userid,siteid,loginid,还有当前时间戳等信息组合,通过加密算法生成当前的登录上下文信息;将登录上下文信息保存到response的cookie中,在客户端记录以方便后期的查询。、图3-2 UDB用户登录模块流程图3.2.2免登录模块该模块主要解决用户从CCBU/ICBU网站免登到ITBU页面模块。主要采用token+签名机制保证免登的安全性。CCBU/ICBU和TokenService,ITBU3个模块分别部署在3台不同应用上。token目前保存在MemCached中,外部访问全部走https.免登步骤与事例如下:用户Browser

CCBU/ICBU

eg:/xxx/tgs?toURL=xxx传参校验,生成保存token至Memcached.用户Browser

ITBUeg:/xxx/tvs?token=xxxx&sign=xxxxtoken,ip,ref参数校验,从MemCached中取ip,ref跟当前Request的ip,ref做参数校验用户Browser

钱掌柜/外贸版/E网打尽

eg:

/图3-3 用户免登录模块顺序图图3-4 用户免登录模块流程图4详细设计4.1接口设计4.1.1内部接口设计UDB模块.1.1AuthCookie内容设计Authcookie用来存放udb的sessionid,保存格式:cookie名称:udb:az存放内容:SiteidLoginidUserid用户显示名称将以上三个数据用AES的方式加密压缩后存储在Cookie中sid之前加上名称前缀udb,防止该cookie的值被业务模块不小心覆盖。publicinterfaceIUserService{/***获得当前的登录用户信息*@paramrequest*@returnAuthCookie*/publicAuthCookiegetAuthCookie(HttpServletRequestrequest);/***根据userId获取用户资料*@paramuserId*@returnUserProfileResult*/publicUserProfileResultgetUserProfileByUserId(StringuserId);/***根据siteid,loginid和用户资料注册新用户*@paramsiteid*@paramloginid*@paramprofile*@returnUserResult*/publicUserResultregister(Stringsiteid,Stringloginid,Mapprofile);/***通过用户的loginid、siteid和密码验证用户的有效性*@paramsiteid*@paramloginid*@parampasswd*@returnUserResult*/publicUserResultvalidate(Stringsiteid,Stringloginid,Stringpasswd);/***根据siteid和loginid查询对应的userid*@paramsiteid*@paramloginid*@returnUserResult*/publicUserResultgetUserIdByLongId(Stringsiteid,Stringloginid);/***根据userid查询对应的longid(siteid和loginid)*@paramuserid*@returnLongIdResult,包含:*1、一个String类型的siteid*2、一个String类型的loginid*3、一个int类型code,表明状态*/publicLongIdResultgetLongIdByUserId(Stringuserid);}免登录模块TokenService内部接口/** *目标URL的白名单校验*@paramtoURL–目标地址*/privatebooleanvalidateURL(StringtoURL);/** *生成token,sign并存入MemCached*@paramip–发起端ip*@paramref–发起端具体url地址*@paramsite–网站标识*@paramtoURL–目标端url*@returnMap–null则失败,否则返回(token:xxxx,sign:xxx)*/privateMapgenerateAndSaveToken(Stringip,Stringref,Stringsite,StringtoURL,Stringsign)/** *删除token从MemCached*@paramtoURL–目标地址*/privatebooleandeleteToken(Stringtoken);4.1.2外部接口设计对外提供的接口.1UDB模块.2免登录模块TokenService提供以下2个REST接口服务:publicinterfaceITokenService{ /** *<p>校验目标URL</p> *<p>生成并保存Token</p>*@returnTgResult*/publicTgResultgenerateTvsURL(StringloginId,Stringsite,StringtoURL,Stringref,Stringip);/***根据传入token,ip,ref校验正确性,传入token在MemCache查询各个参数,再进行参数比对.*@paramtoken*@paramsign*@paramip*@paramref*@returnTvResult*/publicTvResultvalidate(Stringtoken,Stringip,Stringref,Stringsign);}需要依赖的外部接口.1CCBU/ICBU需提供的接口获取用户资料注册用户密码验证判断用户名接口返回结果的设计TgResult对象设计publicclassTgResult{ publicfinalstaticintSUCCESS=0; publicfinalstaticintINVALID_TOURL=1; publicfinalstaticintMEMCACHED_COMMUNICATED_ERROR=2; publicfinalstaticintINVALID_TVS_URL=3; privateintresultCode; privateStringtvsURL; privateStringmessage; publicintgetResultCode(){ returnresultCode; } publicvoidsetResultCode(intresultCode){ this.resultCode=resultCode; } publicStringgetTvsURL(){ returntvsURL; } publicvoidsetTvsURL(StringtvsURL){ this.tvsURL=tvsURL; } publicStringgetMessage(){ returnmessage; } publicvoidsetMessage(Stringmessage){ this.message=message; } }TvResult对象设计publicclassTvResult{ publicfinalstaticintSUCCESS=0; publicfinalstaticintINVALID_IP=1; publicfinalstaticintINVALID_REF=2; publicfinalstaticintINVALID_TOKEN=3; publicfinalstaticintINVALID_SIGN=4; publicfinalstaticintMEMCACHED_COMMUNICATED_ERROR=5; privateintresultCode; privateStringloginId; privateStringsite; privateStringtoURL; privateStringmessage; publicintgetResultCode(){ returnresultCode; } publicvoidsetResultCode(intresultCode){ this.resultCode=resultCode; } publicStringgetLoginId(){ returnloginId; } publicvoidsetLoginId(StringloginId){ this.loginId=loginId; } publicStringgetSite(){ returnsite; } publicvoidsetSite(Stringsite){ this.site=site; } publicStringgetToURL(){ returntoURL; } publicvoidsetToURL(StringtoURL){ this.toURL=toURL; } publicStringgetMessage(){ returnmessage; } publicvoidsetMessage(Stringmessage){ this.message=message; } }AuthCookie对象设计publicclassAuthCookie{ privateStringsiteId; privateStringloginId; privateStringuserId; publicintgetSiteId(){ returnsiteId; } publicStringgetLoginId(){ returnloginId; } publicStringgetUserId(){ returnuserId; }}UserResult对象设计publicclassUserResult{ privateintcode; privateStringuserId; publicStringgetCode(){ returncode; } publicStringgetUserId(){ returnuserId; }}LongIdResult对象设计publicclassLongIdResult{ privateStringcode; pr

温馨提示

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

评论

0/150

提交评论