当前位置:文档之家› 用户认证系统设计

用户认证系统设计

近年来很多高校采用了基于LDAP(轻量级目录访问协议)的用户认证方式,较好地解决了统一身份认证问题,但是直接将LDAP服务器暴露在其他应用系统和用户面前具有一定的安全风险,如权限配置错误可能导致非法用户获取其他用户的资料甚至口令。另外,在分布式环境下LDAP的访问也有可能受到防火墙的阻挡。Web Service是目前分布式异构环境下构建复杂系统的重要技术。因此,我们设计了一种Web Service和LDAP相结合的分布式用户认证系统,解决校园网用户统一身份认证问题。

Web Service技术简介

Web Service是在HTTP、XML和SOAP(简单对象访问协议)等开放标准上形成的技术,具有平台无关性、可跨越防火墙通信和松散耦合的特点,特别适合于分布式异构环境。Web Service的体系结构主要包括SOAP、WSDL和UDDI,SOAP以XML格式提供了一个简单、轻量的用于在分布环境中传输信息的机制。SOAP通过HTTP的80端口传送对远程进程的调用,解决了通过防火墙传送消息的问题。WSDL(Web Service描述语言)基于XML格式,用来描述Web Service。它描述了Web Service可以执行的操作以及Web Service可以发送或接收的消息格式。UDDI(统一描述、发现和整合)是发布和使用Web Service的枢纽,它主要用于解决在Internet上查找和定位Web Service的问题。Web Service提供者在UDDI注册中心注册后,用户可以通过UDDI查询到Web Service,从而通过SOAP调用Web Service。

系统实现

系统架构

综合考虑到性能和保护现有投资的要求,我校校园网采用了网关认证和802.1x认证相结合的方式:学生宿舍全部部署支持802.1x的交换机,采用802.1x认证,办公区和家属宿舍则使用早期购买的不支持802.1x的交换机,采用网关+Web认证。两套认证系统使用统一的用户资料,用户资料存储在LDAP服务器中,通过Web Service实现用户身份的认证,如图2所示。Web Service通过Java技术实现,运行环境为Tomcat和AXIS框架。

Tomcat是JSP和Servlet运行环境,AXIS框架来自Apache开放源代码组织,它是使用Java语言编写的基于最新的SOAP 规范(SOAP 1.2)和SOAP with Attachments 规范的开放源代码框架。使用AXIS实现Web Service非常简单,只需编写认证相关的Java类,然后将文件扩展名改为jws,无需编译,将文件拷贝到应用程序发布目录下即可。在客户端的浏览器中输入Web Service地址:http:serverip:8080/webservice/authentication.jws?wsdl即可列出调用此服务的方法。Web Service服务端主要提供以下三种认证方法:
public class authentication {

//明文认证,客户端提供明文用户名和口令

public int authen(String userName, String password){ …
}
//加密认证,客户端将用户名、口令、IP、MAC加密后提

交,验证成功后返回一个随机令牌

public String authen3DES(String encrypedMessage){…
}
//MD5-challenge认证,客户端提交用户名和challenged password

public int authenChallenge(String userName, String challengedpasswd){...

}
}
网关认证流程

为保障系统的安全性,我们舍弃了网关认证的易用性,用户需要通过客户端软件才能认证上网。同时客户端软件还用于控制用户接入和保持用户状态。

①用户登录系统时,客户端将用户名、密码、IP地址和MAC地址等信息通过对称密钥(3DES)加密后发送给认证系统Web Service;

②认证系统Web Service将信息解密后,交给应用服务器的用户认证Bean,通过JNDI访问LDAP服务器,对用户身份进行认证和授权检测;

③检测通过后通知网关放开此用户;

④向客户端发送一个随机生成的令牌(Token);

⑤客户端随后即用此令牌、IP地址、MAC地址等信息加密,定时向认证系统发送更新消息;

⑥认证系统更新在线用户数据库;

⑦认证系统后台定时查询在线用户数据库;

⑧一旦超过一定时间没有更新用户状态,或者用户IP地址、MAC地址发生变动,即通知网关强行断开此用户的连接。使用这种方式可以大大提高网关认证系统的安全性,首先加密传输的用户名和密码难以被Sniffer破解。另外,用户IP地址、MAC地址、用户名和随机令牌的绑定传输,可以有效防止IP地址盗用和非法DHCP服务器造成的账号盗用。
802.1x认证流程

802.1x认证是一种多层结构的认证体系,包括客户端(Supplicant)、接入设备(Authenticator,即支持802.1x的交换机)和认证服务器(Authentication Server,一般是RADIUS),我们无法修改交换机的程序,因此只能通过修改RADIUS服务器来实现与Web Service的交互。我们使用的RADIUS服务系统是FreeRADIUS 1.0.5。

传统的802.1x认证过程这里不做详细介绍,主要介绍修改的部分。由于RADIUS服务器本身不保存用户信息,因此用户认证所使用的MD5 Challenge过程则交给认证系统的Web Service进行处理。RADIUS将用户名转发给认证系统,认证系统产生一个Challenge,返回给RADIUS服务器,RADIUS服务器将此Challenge通过交换机发送给客户端,要求客户端进行认证,客户端即将密码和Challenge做MD5算法后的Challenged-Password,经交换机和RADIUS服务器发送给认证系统,认证系统根据从LDAP服务器取得的用户密码,做MD5算法,与收到的Challenged-Password对比,判断用户是否合法,然后回应认证成功/失败信息给RADIUS服务器。如果成功,则根据用户的相关属性给用户授权。如果认证失败,则流程结束。

分布式认证

由于Web Service技术的松散耦合特点,它没有复杂的消息传递、对

象引用和垃圾回收机制,因此非常适合于分布式处理。在大型的校园网环境中可以部署多台Web Service服务器,提供用户认证服务。考虑到大型校园网在上网高峰期时一分钟内可能有数千用户同时登录,为减轻服务器端进程调度的负担,我们将服务调度的功能放在客户端完成。网关客户端通过配置文件读取Web Service服务器列表,通过随机算法调用其中一台服务器进行认证。802.1x分布式认证则通过修改RADIUS服务器和交换机配置来实现。

与其他应用系统的集成

Web Service是与平台和语言无关的一种远程调用技术,目前几乎所有的编程语言都支持Web Service,表1列出了利用不同语言开发Web Service客户端所需要的工具。不同的应用系统可以通过修改相应认证模块,访问用户认证Web Service实现用户身份的认证和部分授权功能。创建Web Service客户端应用首先是创建代理对象,代理对象具有Web Service所有的数据接口。客户端通过调用此代理类,实现Web Service的调用。很多编程工具中都内置了自动生成Web Service代理对象的工具,如NET SDK中的WebServiceUtil.exe,AXIS中的org.apache.axis.wsdl.WSDL2Java类等。

目前,我校新闻发布系统、研究生管理系统、个人空间、VOD、BBS等网络应用系统已实现基于Web Service的统一身份认证。由于应用系统的权限控制千差万别,通过统一身份认证系统只提供一些常用的授权功能,例如IP地址限制、上网时段控制、应用系统访问权限等,更复杂的授权设置仍然由各应用系统自己完成。

相关主题
文本预览
相关文档 最新文档