单点登录分析与设计

  • 格式:pdf
  • 大小:1022.58 KB
  • 文档页数:30

目录1、概述 (3)2、功能需求 (4)2.1、身份认证标识管理 (4)2.2、消息协议 (5)2.3、日志管理 (5)3、系统设计 (6)3.1、网络结构 (6)3.1、体系架构 (6)3.2、功能模块 (8)3.3、数据模型 (9)3.4、系统接口 (10)3.4.1、用户登录 (10)3.4.2、切换认证 (13)3.4.3、登记接口 (13)3.4.4、签退 (14)3.4.5、认证 (15)4、系统实现 (17)4.1、用户联系类 (17)4.2、业务系统信息设置 (17)4.3、访问业务系统 (18)4.4、配置文件 (22)4.5、核心代码 (23)5、系统测试 (26)5.1、测试概述 (26)5.2、测试用例 (26)5.2.1、用户登录 (26)5.2.2、切换认证 (28)5.2.3、签出 (28)5.2.4、认证 (29)5.2.5、坐席登录 (30)5.3、测试结果 (30)1、概述单点登录系统在企业信息化平台中作为企业用户、个人用户、平台管理员用户登录注册系统,通过单点登录系统信息化平台中的这三类用户可以实现单点登录多平台访问。

实现方式是这三类用户通过单点登录系统进行登录时产生一个登陆表示,通过这个平台唯一的登录标识可以从业务系统跳转到另外一个业务信息。

单点登录系统不存在业务数据维护功能,所以单点登录系统不提供页面功能。

单点登录系统的所有功能通过多个WebService接口对外提供,当然这些接口请求也会通过IP认证的方式进行安全认证。

同时对于业务系统进行二次开发会提供一个开发工具包,开发工具包的主要作用是实现XML字符串和类对象之间的相互转换。

统一身份认证分为业务方面和性能方面两类。

业务问题包括:1.业务管理人员如何实现跨平台管理。

2.教师、学生实现跨平台查看自己的业务数据。

3.业务系统如何改造满足跨平台访问。

性能问题包括:1.每一次登录需要进行记录,系统管理人员可以查询。

2.每一次平台之间的切换需要进行记录,系统管理人员可以查询。

3.如何保证网络安全。

4.每秒访问次数不少于80次(单个应用)。

5.应用可以实现堆砌部署,随时添加机器和应用。

2、功能需求使用统一的界面和逻辑对用户信息进行集中管理,为信息化的各种网络服务和应用系统提供统一的用户管理平台和身份认证服务,统一身份验证用例图如下图所示。

统一身份验证用例图2.1、身份认证标识管理单点登录系统是通过为登陆用户创建一个临时的身份证书SessionKey(系统同一时间内唯一),并且把身份证书和用户标识存在在数据库中的一个表中,从而保证用户在不同系统之间跳转时通过身份证书进行统一认证。

用户身份证书SessionKey在系统中的保存时间为2个小时。

每一次用户用同一个SessionKey访问单点登录系统, SessionKey的有效时间自动重新设置为2小时。

单点登录系统为了实现SessionKey的有效时间为2小时,需要实现一个定时认为,实现失效SessionKey的自动清理。

单点登录系统只提供用户登录验证不对用户权限进行管理,通过单点登录系统进行登录的用户只是三种类型的用户,这三种类型分别是:企业用户、个人用户、管理员用户。

2.2、消息协议消息协议通用采用XML格式,对外发布一个WebService接口根据接口参数和XML的格式区分具体进入那一段业务逻辑处理。

2.3、日志管理单点登录系统是一个后台运行系统,系统运行的每一个步骤都需要有日志进行详细的记录,以便进行跟踪和分析错误。

单点登录系统的日子包括,文件日志和数据库日志。

出现任何错误都需要通过有效途径定位错误原因。

3、系统设计3.1、网络结构网络结构如下图所示。

其他Web服务器其他数据库服务器3.1、体系架构单点登录系统的体系结构图如下图所示。

体系架构系统顶层包图如下图所示:业务页面:用户操作页面。

业务操作:主要控制业务访问的接口和业务流转。

数据处理:提供业务的实现,包括对业务数据的增、删、改、查等操作。

数据实体:业务对象的实体类。

数据接口:提供数据库的访问,传递数据或返回相应数据。

系统辅助:提供了供整个系统辅助的功能。

3.2、功能模块功能模块如图下图所示。

功能模块图单点登录系统功能模块分成三个层次:第一层:统一对外接口,所有外围系统调用统一对外接口使用单点登录系统提供的功能。

第二层:单点登录系统提供的具体接口登记接口、登录接口、切换接口、认证接口、签退接口、坐席登录。

第三层:每一个接口都需要进行请求消息解析、回复消息组装、业务逻辑处理、日志记录几个功能。

3.3、数据模型单点登录系统提供服务时的主要来源数据模型如下图所示,这部分数据通过统一身份认证对外接口、门户、业务管理系统录入。

数据维护通过BMS进行,单点登录主要使用这些数据进行权限角色判断操作。

统一身份验证ER图限于篇幅,本文仅给出部分模块的数据库逻技设计,每个表的功能结构如下表所示。

用户信息表(t_Base_User)(sso_WebInfo)分站点信息表单点登录用户表(sso_UserInfo)3.4、系统接口3.4.1、用户登录通过登录接口用户在单点登录系统中进行登陆注册,单点登录系统产生系统唯一的登录标识,并且把用户的这一次登录记录和登录的系统信息记录到数据库中。

登录接口产生的登陆标识是用户身份的唯一认证标识,通过该标识实现用户在不同系统之间的相互切换。

系统状态图如下图所示。

系统登录状态图用户登录时序图如下图所示。

用户登录时序图用户登录逻辑时序步骤如下:1)将输入参数串转换为参数对象2)检查输入参数格式的合法性3)判断用户类型,根据用户类型决定从什么地方获取用户信息4)获取用户信息5)判断用户是否有登陆相应平台的资格6)调用SessionKey处理模块产生SessionKey(保存SessionKey和用户之间的对应关系是SessionKey处理模块进行处理,对外是一个黑盒子)7)用户登陆日志8)组装返回消息对象9)返回消息3.4.2、切换认证用户已经一个系统中调用过单点登录系统的登陆接口进行过登陆,用户需要切换到其它系统中需要调用该接口。

切换认证时许图如下图所示。

切换认证调用切换接口同时传入用户身份标识SessionKey和用户切换的系统标识。

根据用户传入的SessionKey,获取到用户信息返回。

如果原系统标识和目标系统标志相同,系统进行的是用户登录认证操作,认证操作只是对象SessionKey的有消息进行验证,更新用户最后访问时间。

3.4.3、登记接口在业务平台进行登陆后(访问数据库进行用户名密码验证通过),调用单点登录系统的登记接口获取平台认证标识SessionKey。

登记接口时序图如下图所示。

登记接口时序图3.4.4、签退用户退出平台时调用签退接口,用户签退可能从平台的任意一个业务系统中进行签退,所有对应所有的业务系统来说签退接口是一致的只要传入登陆标识(SessionKey)。

签退时序图如下图所示。

签退接口系统需要进行几个动作,第一需要写用户签退日志,第二删除登陆记录。

签退时序图3.4.5、认证业务系统进行进行系统切换前先调该接口,这个接口可以对失效的SessionKey恢复使用。

这个接口一般的使用常见为系统切换请原系统调用该接口,保证传入目标系统的SessionKey为有效SessionKey。

如果SessionKey已经实现,接口通过查询日志恢复该SessionKey为有效SessionKey,但是该SessionKey登录已经超过8小时,调用该接口也无法恢复该SessionKey。

认证时许图如下图所示。

认证时许图4、系统实现4.1、用户联系类创建用户联系类如下图所示。

用户联系类图4.2、业务系统信息设置业务系统信息设置类如下图所示。

业务系统信息类4.3、访问业务系统SSORequest类图如下图所示。

SSORequest类作用:实体,验证信息的载体,在应用程序边界外做传递对MarshalByRefObject的理解简单来讲,继承此类的对象可以跨越应用程序域边界被引用,甚至被远程引用。

远程调用时,将产生一个远程对象在本地的透明代理,通过此代理来进行远程调用。

Appurl:各独立站点的访问地址Authenticator:各独立站点的TokenErrorDescription:认证失败信息IASID:各独立站点标识IDIPAddress:本站IP地址Password:密码Result:认证结果TimeStamp:时间戳UserAccount:用户帐户SSORequest GetRequest(Page CurrentPage)//获取当前页面上的SSORequest对象PostService类图如下图所示。

PostService类作用:在主站与各独立分站点之间提交验证对象SSORequestFormName,组装一个提交表单,默认名称为“form1”Inputs:集合对象,该集合以name,value的保存方式.Method:表单提交方式,默认”Post”Url,表单提交的地址Add(string name,string value),往Inputs对象中添家内容Post(),将组装成的表单提交Authentication类图如下图所示。

Authentication类作用:创建或验证SSORequestcookieName:定义Cookie名称,默认为”EACToken”hashSplitter:分割符,默认”|”CryptoService GetCryptoService() //取得加密服务bool CreateAppToken(SSORequest ssoRequest) //创建各分站发往认证中心的Tokenbool V alidateAppToken(SSORequest ssoRequest)// 验证从各分站发送过来的Tokenbool CreateEACToken(SSORequest ssoRequest)// 创建认证中心发往各分站的Tokenbool V alidateEACToken(SSORequest ssoRequest) //验证从认证中心发送过来的TokenCreatEACCookie(string userAccount, string timeStamp, string expireTime)// 创建EAC 认证中心的Cookiebool V alidateEACCookie(out string userAccount)// 验证EAC 认证中心的Cookie,验证通过时获取用户登录账号CryptoHelper类图如下图所示。

CryptoHelper类图作用:字符串转为字节数组再转为Hashed字节数组,再转为base64字符串,既获得加密字符串CryptoService类图如下图所示。