本科毕业设计-WEB单点登录系统的研究与设计

发布时间 : 星期三 文章本科毕业设计-WEB单点登录系统的研究与设计更新完毕开始阅读

第二章 单点登录系统相关技术与规范 5

第二章 单点登录系统相关技术与规范

2.1 单点登录系统概念

Single Sign-On(SSO),中文名称为单点登录。指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。

用一种生活中的例子来对比介绍。西安是一个旅游胜地,有很多著名的景点。通常人们在进入景点之前都需要购买该景点的门票,才能进入欣赏风景。当你游览各个景点时就显得很不方便,每个景点都需要重新购买单独的门票,既费时又费力。于是西安旅游局发行了一种旅游年票,只需购买该年票,就可以随时进入西安市多个景点,并不需要在各个景点单独购票。

单点登录机制与上述情况类似。当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录(1);根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket(2);用户再访问别的应用的时候(3,5)就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行效验,检查ticket的合法性(4,6)。如果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。如图2-1所示:

应用系统1 (1) (2) 用户 (2) (3,5) 认证系统 (4,6) 应用系统2 应用系统3 图:2-1

6 WEB单点登录系统的研究与设计

从上面的视图可以看出,要实现SSO,需要以下主要的功能: 1. 所有应用系统共享一个身份认证系统。

统一的认证系统是SSO的前提之一。认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(ticket),返还给用户。另外,认证系统还应该对ticket进行效验,判断其有效性。

2. 所有应用系统能够识别和提取ticket信息

要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对ticket进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从而完成单点登录的功能。

上述是对单点登录系统的概述,对于本文所研究的web单点登录系统而言,众所周知,Web协议(也就是HTTP)是一个无状态的协议。一个Web应用由很多个Web页面组成,每个页面都有唯一的URL来定义。用户在浏览器的地址栏输入页面的URL,浏览器就会向Web Server去发送请求。浏览器向Web服务器发送了两个请求,申请了两个页面。这两个页面的请求是分别使用了两个单独的HTTP连接。所谓无状态的协议也就是表现在这里,浏览器和Web服务器会在第一个请求完成以后关闭连接通道,在第二个请求的时候重新建立连接。Web服务器并不区分哪个请求来自哪个客户端,对所有的请求都一视同仁,都是单独的连接。这样的方式大大区别于传统的(Client/Server)C/S结构,在那样的应用中,客户端和服务器端会建立一个长时间的专用的连接通道。正是因为有了无状态的特性,每个连接资源能够很快被其他客户端所重用,一台Web服务器才能够同时服务于成千上万的客户端。

但是我们通常的应用是有状态的。先不用提不同应用之间的SSO,在同一个应用中也需要保存用户的登录身份信息。例如用户在访问页面1的时候进行了登录,但是刚才也提到,客户端的每个请求都是单独的连接,当客户再次访问页面2的时候,如何才能告诉Web服务器,客户刚才已经登录过了呢?浏览器和服务器之间有约定:通过使用cookie技术来维护应用的状态。Cookie是可以被Web服务器设置的字符串,并且可以保存在浏览器中。当浏览器访问了页面1时,web服务器设置了一个cookie,并将这个cookie和页面1一起返回给浏览器,浏览器接到cookie之后,就会保存起来,在它访问页面2的时候会把这个cookie也带上,

第二章 单点登录系统相关技术与规范 7

Web服务器接到请求时也能读出cookie的值,根据cookie值的内容就可以判断和恢复一些用户的信息状态。

Web-SSO完全可以利用Cookie结束来完成用户登录信息的保存,将浏览器中的Cookie和上文中的Ticket结合起来,完成SSO的功能。

2.2 通用的标准解决方案

2.2.1 通用安全服务应用程序接口(GSS-API)

\简写GSS-API[4],译为通用安全服务应用程序接口,一个典型的GSS-API调用者是通讯协议本身,调用GSS-API,用可信性、完整性和机密性的安全服务来保护他的通讯。例如Kerberos。这就是GSS-API可以在不同的安全服务和应用程序被使用的原因,包括SSO。GSS-API 的目的是提供隐蔽特定的内在安全机制的一个接口。这可以帮助不同应用程序之间有更好的互操作性。一个典型的GSS-API调用者是通讯协议本身,调用GSS-API,用可信性、完整性和机密性的安全服务来保护他的通讯。调用者接受一个本地GSS-API实现提供的一个令牌,并且把令牌传送给远程系统的对应方;对方接收令牌并把其传送给他的GSS-API本地实现处理。通过GSS-API这种方式实现的可用的安全服务在基于公钥和私钥的底层加密技术的多种机制上可实现的。

关于认证和密钥分配系统的一个经常遇到的问题是,由于它要求对应用系统本身做出改动,所以经常受到的冷遇。考虑到这一点, 对一个认证和密钥分配系统来说, 提供一个标准化的安全API就显得格外重要。能做到这一点, 开发人员就不必再为增加很少的安全功能而对整个应用程序动大手术了。因此, 认证系统设计领域内最主要的进展之一就是制定了标准化的安全API, 即通用安全服务API(GSS-API)。德州Austin大学的研究者们开发的安全网络编程(SNP), 对GSS-API接口进行了进一步的封装, 使同网络安全性有关的编程更加方便。 GSS-API的设计假定和强调以下几个基本目标:

1. 机制独立:GSS-API定义了一个接口来使用密码技术实现强壮的认证和其他安全服务--在独立于特定的底层机制的通用层上。例如,GSS-API提供的服务

8 WEB单点登录系统的研究与设计

可以用密钥技术实现(例如,Kerberos)或者使用公钥技术实现(例如 X.509)。

2. 协议环境独立:GSS-API独立于使用它的通讯协议组,允许在多种协议环境中使用。在进行调用的协议和GSS-API的应用中间,加入一个面向特定的通讯协议(如RPC)的中介,可以保持GSS-API功能的起用和协议通讯的起用之间的同步。

3. 协议联合的独立:GSS-API安全上下文构造是独立于通讯协议相关的构造的。这个特点允许单独的GSS-API实现可以被多种协议模块使用,以利于调用这些模块的应用程序。同时GSS-API服务也可以被应用程序直接调用,完全独立于协议关联。

4. 适应多种实现:GSS-API客户不是被限制存在于实现GSS-API的系统定义的TCB(Trusted Computing Base)范围内;安全服务被以一种既适应intra-TCB调用,又适用extra-TCB调用的方式说明。 2.2.2开放软件基金会(OSF)-分布式计算环境(DCE)

开放软件基金会(OSF)的分布式计算环境[5]。DCE是一个被广泛接受的解决方案,用于开发和部署安全的、企业级的分布式计算应用,提供网络安全、透明的服务分配和跨平台通信的能力,允许在一个异构的环境中快速设计基于\主/从\或\对等\结构的应用。它能方便地对网络提供最佳的性能和可靠的保护。因为DCE是由主流操作系统厂商的行业协会所支持的,所以这个标准在很多计算平台上都得到了广泛的支持。DCE核心功能现在已经被几乎所有的UNIX系统及其变种所支持,并且,在PC操作系统日益普及的今天,DCE核心服务也在PC机上变得越来越普遍。

DCE的认证管理服务是集成了基于DES私人密钥加密技术和MIT开发的Kerberos技术的身份验证。这是一种企业级的安全解决方案,它使企业能为网络资源的使用提供安全。保管理护和通过企业Intranet的用户和通过Internet的远程用户都可以有控制地访问这些资源。

DCE对于安全涉及到4个方面: 1.认证(authentication),

2.安全通讯(secure communications),

联系合同范文客服:xxxxx#qq.com(#替换为@)