统一身份认证子系统详细设计与部分实现

来源:互联网 发布:何洁 知乎 编辑:程序博客网 时间:2024/04/24 02:05

 

 

 

一、摘要…………………………………………………………………………1

二、引言…………………………………………………………………………1

三、

1)系统的功能要求………………………………………………………2

2)系统的性能要求………………………………………………………2

3)运行环境要求…………………………………………………………2

4)开发工具简介…………………………………………………………2

四、总体设计

1)系统模块划分…………………………………………………………2

2)系统用例图……………………………………………………………3

3)整个系统包图…………………………………………………………4

五、详细设计

(1)整个系统中各个类的静态结构及相互关系……………………………4

2RoleSystem序列图………………………………………………………6

3SiteSystem序列图………………………………………………………7

4UserSystem序列图………………………………………………………9

六、小结…………………………………………………………………………11

七、致谢……………………………………………………………………………12

八、参考文献……………………………………………………………………12

 

 

 

 

 

 

 

统一身份认证子系统详细设计与部分实现

 

郑天明

西南师范大学计算机与信息科学学院重庆 400715

 

摘要:统一身份认证子系统(UIA子系统)统一管理用户和Internet内各个分管理系统(成员站点)。每个注册的用户拥有统一的网络账户(用户名/密码),用户通过同一个用户名/密码,可以访问所有Internet上的网络应用系统(成员站点),为用户应用提供统一身份认证和单点登录服务。该论文主要内容包括该系统需求分析、总体设计、商务外观层和商务逻辑层的详细设计。

Abstract: Unique Identity Authentication system (UIA ) manage user and campus each in charge of speaking to the system (member site ) in unison. Each registered network user has unified network accounts (user name / the password), users can visit the network application system(member site) in the garden through the same user name / the password, offer for the thing that users use and unify identity authentication and some single log-in services. This thesis main content include this system demand analyse , overall design , detailed design to BusinessFacade and BusinessRules.

关键词:用户,成员站点,用户角色

 

一 、引言

对于Internet上的各个应用系统,用户使用时必须在每个系统中都注册,登陆,比较麻烦,同时 也容易造成混乱,更带来数据资源的重复存储。因此需要一个专门的系统对用户进行统一管理,即用户只需要注册登陆一次就可以使用各不同应用系统。当然对于各个不同的应用系统,为了用户的使用方便,也对其进行一个逻辑上的统一管理。因此开发统一身份认证子系统是很有必要的。当应用系统注册到在统一身份认证子系统后,我们称之为成员站点。

对用户的统一管理,一方面用在访问各个成员站点时无需多次注册登陆,既给用户的使用带来方便,也为成员站点节约资源,避免各个成员站点分散管理统一用户带来的数据冗余。另一方面也给新的成员站点(新的应用系统)的开发提供方便。

对成员站点进行统一管理,一方面给用户的操作带来方便,即用户登陆统一身份认证子系统后就可以直接通过链接对各成员站点进行访问。另一方面对于成员站点只需要在该系统中注册时给出不同用户的权限类型,便可对各类用户进行权限控制,由该系统完成对用户的权限分配。

由小组在组长王云的带领下讨论完成需求分析和总体设计(模块划分)工作,由我负责商务外观层和商务逻辑层代码编写工作。

 

 

二、需求分析:

 

1)系统功能要求

统一身份认证子系统要实现两大功能,一是对用户和系统的身份认证,二是对用户与成员站点之间的权限控制。通过用户的身份和成员站点对用户的权限分配用户可在该系统中获得访问某成员站点的权限,通过系统的身份和用户对成员站点的权限控制,成员站点可在该系统中获得察看用户信息的权限。

2)系统性能要求

统一身份认证子系统将会管理海量的用户和成员站点信息,这对子系统的性能要求很高,同时多网络的性能要求也很高,所以要求子系统首先要有容量很大的存储设备,同时要求有较大的带宽,保证大量用户在访问时不会发生网络阻塞。

3)运行环境要求

.NET平台,SQLSERVER数据库,IIS服务器

4)开发工具简介

Microsoft SQL Sever是高性能客户/服务器关系数据库管理系统。有许多重要的新特性,如透明分布式处理、简明管理、基于对象嵌入与链接技术(0LE)的程序设计接口,以及与Internet的集成等,选择Microsoft SQL Sever最重要的原因是它的可扩展性和较高的安全性。因为Microsoft SQL Sever是基于多线程序并行数据库内核,它能够发挥附加处理器的优势,在许多情况下,只有使用特定的并行数据库和操作系统才能获得对对称多处理技术的支持;当然它还具备很高的安全性,对用户资料进行有效的保护。

 

 

三 、总体设计

 

1)统一身份认证子系统模块划分

统一身份认证子系统主要有两大功能模块:身份认证模块和权限管理模块。

身份认证模块管理用户身份和成员站点身份。向用户提供在线注册功能,用户注册时提供必须信息(如用户名、密码)该信息即为用户身份的唯一证据,拥有该信息的用户即为统一身份认证子系统的合法用户;身份认证模块还向成员站点提供在线注册功能,成员站点注册时需提供一些关于成员站点的基本信息,还包括为用户定义的角色种类(如普通用户、高级用户、管理员用户)。

权限管理模块主要有:成员站点对用户的权限控制、用户对成员站点的权限控制、成员站点对成员站点的权限控制。用户向某成员站点申请分配权限时,需向该成员站点提供他的某些信息,这些信息就是用户提供给成员站点的权限,而成员站点通过统一身份认证子系统身份认证后就可以查询用户信息,并给该用户分配权限,获得权限的用户通过子系统身份认证后就可以以某种身份访问该成员站点。成员站点对成员站点的权限控制主要是成员站点控制向其它成员站点提供的调用接口。

统一身份认证子系统还包括系统维护模块和使用帮助模块,系统维护模块主要功能是成员站点的管理和对系统数据的维护。

统一身份认证子系统还提供一套SDK,供各成员站点开发时使用。如用户访问某成员站点时,子系统提供返回用户权限的函数,供成员站点调用。

 

2)系统用例图:

 

用户可以进行单点登陆,也就是用户通过统一身份认证子系统的身份认证后,就可以访问子系统的所有该用户拥有权限的成员站点,用户在访问完一个站点后,不需要再次通过认证就可以访问他拥有权限的成员站点,同时系统向成员站点返回他相应的访问权限;集中式授权控制是用户向成员站点授权,用户在向站点申请权限时,提供想让站点看到的信息,即向成员站点授权;成员站点也向用户授权,用户向站点申请权限后,站点就可以为该用户开通,用户就获得了在该站点的权限;还为成员站点提供管理功能,包括管理其基本信息和其成员用户的权限,包括为用户开通权限,禁用用户的权限

 

3)整个系统的包图:

 

 

主要说明了在开发时所用的开发方式:.NET层次化开发,也就是微软推荐的开发方式。主体部分主要有三个层:商务逻辑层、商务外观层、数据库访问层。其中商务外观层主要定义一些基本的操作,可以调用商务逻辑层,也可以调用数据库访问层和Model层,商务逻辑层主要是定义一些操作的规则,可以调用数据库访问层和Model层,数据库访问层主要是具体的对数据库的操作,可以调用Model层,通过这种层层调用来实现系统的主体功能;WebService层可以调用商务逻辑层,数据库访问层和Model层,WebUI主要是提供给用户的界面,体现系统的实际功能,可以访问商务外观层和Model层,Model层主要功能是实现层间的数据传递,可以被其他层调用。采用这种开发方式主要是有利于系统的维护和今后的系统扩展,如果某一层出现问题或需要更新某一层的功能,只需要修改相应的那一层,不需要修改其他层,这样就可以问题局部化,便于解决问题。

 

 

四、 详细设计

 

(1)系统中各个类的静态结构及相互关系图:

 

该图描述系统中各个层包含的类及类的成员函数,还标示了类之间的调用关系。现以商务外观层为例为例说明如下:

该层有三个类:UserSystem,SiteSystem,RoleSystem,其中UserSystem包括函数

CreateSite(),创建一个站点

EnableSite(),开通一个站点

DisableSite(),停用一个站点

UpdateSite(),更改一个站点

RemoveSite(),删除一个站点

GetSite(),查询一个站点

ListAllSites(),查询所有站点

该类调用商务逻辑层中的类UserRoles的成员函数和数据库访问层中的类Users的成员函数来实现系统的功能。其余各类与上述类似,图中已经标明,这里不在详细描述。

(2)RoleSystem序列图:

该图描述系统管理角色的具体实现过程,涉及到商务外观层和商务逻辑层,实现时通过层层调用。现以成员站点删除一种角色为例说明如下:

在商务外观层由类RoleSystem的成员函数RemoveRole()来实现该功能,由于删除一种角色,需要满足一定的条件,所以函数通过调用商务逻辑层中的类UsersRoleRules的成员函数RemoveRole()来实现,由于函数的参数是nickname,usid,通过调用数据库访问层提供的类Users的成员函数GetUser()和类Sites的成员函数GetSite()调用Model层返回UserDataSiteData两各数据实体,获取UserID,SiteID两个参数,如果这两个实体为空,返回false,否则,再通过数据库访问层中类UserRoles的成员函数GetUserRole()使用参数UserID,SiteID调用Model层返回UserRoleData数据实体,如果这个实体为空,返回false,否则,返回true。这个功能实现的调用比较复杂,商务外观层调用商务逻辑层,然后商务逻辑层再调用商务逻辑层和数据库访问层。代码如下:

//商务外观层代码

public bool RemoveRole(string nickname,System.Guid usid)

{

return new BusinessRules.UserRoleRules().RemoveRole(nickname,usid);

}

//商务规则层的代码

public bool RemoveRole(string nickname,System.Guid usid)

{

UserData user=new DataAccess.Users().GetUser(nickname);

    SiteData site=new DataAccess.Sites().GetSite(usid);

    if(user!=null && site!=null)

    {

UserRoleData userrole=new DataAccess.UserRoles().GetUserRole(user.UserID,site.SiteID);

        if(new DataAccess.UserRoles().RemoveUserRole(userrole)==1)

                return true;

        else return false;

    }

    else return false;

}

 

 

 

 

 

 

 

(3)SiteSystem序列图:

 

 该图描述系统管理成员站点的具体实现过程,涉及到商务外观层和商务逻辑层,实现时是通过层层调用。现以删除一个成员站点为例说明如下:

在商务外观层由类SiteSystem中的函数RemoveSite()来实现功能,由于删除一个成员站点不需要规则限制,只需在数据库中删除该成员站点的相关信息即可,所以不需要调用商务逻辑层,直接调用数据库访问层中的类Sites的成员函数RemoveSite()来实现系统功能,这个函数的实现很简单,只有一层的调用。代码如下:

//商务外观层代码

public bool RemoveSite(System.Guid usid)

{

    int ret= new DataAccess.Sites().RemoveSite(usid);

    if(ret==1)

       return true;

    else return false;

}

(4)UserSystem序列图


该图描述系统管理用户的具体实现过程,涉及到商务外观层和商务逻辑层,实现时通过层层调用。现以找回用户密码为例说明如下:

在商务外观层由类UserSystem的成员函数FindPassword()来实现,由于只有用户能完整的填写密码提示问题和回答才能找回密码,所以,函数通过调用商务逻辑层的类UserRules的成员函数FindPassword()来实现这个限定。由于函数的参数为nickname,question,answer,通过调用数据库访问层的函数,返回old.Questionold.GetUser两个数据集,如果用户填写的questionanswer与之相吻合,则返回用户用户的密码,否则返回null,这个功能实现的调用比较简单,商务外观层调用商务逻辑层,然后商务逻辑层再调用数据库访问层。代码如下:

//商务外观层代码

public string FindPassword(string nickname,string question,string answer)

{

    return new BusinessRules.UserRules().FindPassword(nickname,question,answer);

}

//商务逻辑层代码

public string FindPassword(string nickname,string question,string answer)

{

    UserData old=new DataAccess.Users().GetUser(nickname);

    if(old!=null && old.Question==question && old.Answer==answer)

        return old.Password;

    else return null;

}

 

 

五、小结:

在本次毕业设计开发中,我们小组充分发挥协作精神,共同努力,在指导老师和组长王云同学的带领下完成任务。完成本次毕业设计后,我也学到很多东西,首先,我对微软的.NET框架开发方式有了初步的了解,对使用C#程序设计语言也有一定的体会,对目前先进的技术(WebService技术)有了一定的认识,其次,以前只知道写一些代码,现在,我对开发一个完整软件有过一次尝试,知道软件开发不能只停留在写代码上,更重要的是工程化开发方式,注重软件开发的前期工作,如:可行性分析、需求分析、总体设计等工作是非常重要的,最后,我深刻的认识到团体协作在软件开发中的重大作用,毕竟以我们目前的能力不可能独自完成某项工作的,在工作的过程中,如果遇到很棘手的问题,我们小组就集中到一起,共同讨论解决难题,而且我们也始终保持开发的进度一致,没有由于某个成员的工作未完成而导致整个开发进度的推迟。

随着现代互联网的发展,越来越多的用户和网站出现在Internet上,而如何管理他们的信息是目前面临的重要问题,统一身份认证子系统是针对解决这个问题而开发的,该系统具有界面简单,功能比较全面,可扩展性好等优点。在实现该系统的过程中,我们严格的按照微软推荐的开发方式——.NET层次化开发,为以后的维护和扩展提供方便。但是,由于该系统目前只是初具雏形,为使其更加完善还应对该系统进行完善和改进。

 

 

六、致谢

本次毕业设计能够顺利完成离不开我们指导老师邹显春老师的指导和帮助,卢心红老师、陈武老师、闻晓老师、李运刚老师在此过程中也给予了极大的帮助,对他们的帮助表示衷心的感谢。还有小组所有成员对我的大力支持,在此对他们表示衷心的感谢!

七、主要参考文献与附录:

[1] 张志学. NET框架开发人员参考手册 .清华大学出版社 ,2001

[2] 郭胜,秦岸,马丽. C#.NET 程序设计教程 .清华大学出版社 ,2002

[3] 孙瑛霖,丁建扬 译. VISUAL BASIC.NETVISUAL C#.NET面向对象程序设计 .清华大学出版社,2002

原创粉丝点击