基于Radius协议的Web系统用户认证技术研究
四川广播电视大学 冯 立 刘德学
【摘 要】 随着校园网络的发展以及用户的不断增加,如何在校园网中对用户进行安全、高效的认证和访问控制,已经成为首要解决的问题。RADIUS协议是一个被广泛应用于网络认证和授权的协议。本文在介绍RADIUS 协议原理的基础上,详细分析说明了基于Radius协议的Web Service用户认证设计思想,并对RADIUS协议的实现做了分析与设计。
【关键词】 无线局域网;RADIUS协议;SSL协议;用户认证
一、引言
随着计算机技术和网络技术的迅速发展,学校信息化工作的开展也越来越深入,目前学校已经建设了众多的面向教师和学生的服务系统,这些管理系统已经成为学校的教学、管理和科研等日常工作中的重要环节,为全校师生提供全校性的网络资源信息服务。由于每个应用系统使用的用户群体不同、研发背景也不同。因此,在研发时每个系统中都自设了一个独立的用户系统用来对用户信息(如用户ID、口令、授权信息等)进行管理。
RADIUS(Remote Authentication Dial In User Service)是一种用户认证协议标准,采用分布式B/S(Browse/Server)结构完成密码的集中管理和身份认证功能,而且能够支持多种认证方式。RADIUS由于具有良好的安全性和可扩充性,广泛应用在各种需要认证的场合。在详细介绍基于Radius协议的Web Service用户认证设计的思想后,并对RADIUS协议的实现做了分析与设计。
二、Web Service的用户认证设计
校园网络用户可以通过内部网络,登录到RADIUS认证系统的Web认证页面进行认证,认证页面通过调用认证服务程序来读取用户的用户名和密码,并构造相应的RADIUS认证请求数据包,发送给后台的RADIUS服务器进行认证。
认证服务模块提供RADIUS客户端的功能如图1所示。实现采用Web接入方式,Web服务是使用了Linux下的Apache服务器和PHP语言来实现的。认证服务程序负责接受内部用户的认证请求,根据用户提供的认证信息,按照RADIUS数据包的格式构造RADIUS认证请求数据包,发送给RADIUS服务器来进行认证,然后等待RADIUS服务器的响应。接收响应信息后,判断服务器返回的响应类型,若为“允许接入”,则构造防火墙开通请求数据包,发送给访问控制程序,否则认证失败。若在等待一定的间隔时间段内没有接收到响应,则重传RADIUS认证请求。
图1 Web Service的认证服务模块实现流程
三、认证功能的方法
三、认证功能的方法
Web Service采用Apache Server实现,在系统中具体需要实现的内容包括Apache Server的安装和配置、重定向技术的实现、用户认证信息的提取、Apache Server和Radius Client之间的信息交互。依据前面分析介绍的思想,实现客户端的浏览器与认证服务器的Web Service之间的通信交互程序代码,认证服务器的RADIUS Client 与RADIUS服务器之间的通信交互程序代码,以及认证服务器的Web Service与RADIUS Client间的交互代码,代码分析如下:
(一)Apache Server的安装和配置
比较以上两种方法,不难发现方法一中需要修改Apache Server的配置文件,因为无法在配置文件中获取认证服务器工作时的IP地址,所以每当认证服务器改变其IP地址时,就要重新修改其Apache Server的配置文件。而在方法二中,可以做到在重定向时动态的获得认证服务器此时正在使用的IP地址,所以即使认证服务器改变其IP地址,也不会对重定向的操作有所影响。因此,在设计实现时选择方法二,通过添加脚本程序的方法实现端口的重定向更为灵活方便。
(三)用户认证信息的提取
Web Service在收到客户端送来的认证信息后,将进行如下一系列的操作(这些操作将由嵌入在Index.PHP中的脚本语句执行):首先,从客户端的传送信息中提取出“用户名(UserName)、密码(Password)”以及客户端的IP地址,由下列语句判断用户的认证信息是否完全,即用户名和密码是否都全部填写。如果用户填写的信息不完全,则提示用户先前的填写不完全,并同时将
当Web Service收到完整的认证信息后,就将这些信息发送给Radius Client并等待其回应。
(四)Web Service和Radius Client之间信息的交互
在交互过程中涉及两个问题:信息交互方式的选择和交互数据格式的定义,接下将对信息交互方式的选择和交互数据格式的定义作分析说明。
1.信息交互方式的选择
在Web Service将用户信息发送给Radius Client并等待响应的过程中,涉及认证服务器上两个不同进程之间信息的交互,在测试系统中使用Socket机制实现Web Service与Radius Client之间的信息交互。实现这一过程,可以借助于在htm l页面中嵌入PHP脚本程序来实现,流程如图2所示。
2.交互数据格式的定义
在数据交互的过程中的一个重要问题是:Web Service和Radius Client之间交互的数据是以什么样的形式被传递的。只有定义好交互数据的格式后,Web Service和Radius Client都以这种形式来对收到的数据进行组织和解析,才能完成对数据的识别,数据的交互才真正有意义。由于它们之间所需传送的数据只有用户名、密码和用户的IP地址,再考虑到这些数据的传送需要借助于PHP语言来实现,结合PHP语言的具体特点,实现可考虑用字符串来完成这一功能。在字符串中需要区分出不同的数据,故可采用如下的数据格式:
USERNAME=XXXXXXX\n
PASSWORD=xxx\n IP=XXXXXXX\n
设计采用“\n”区分不同的字段,用“=”将数据含义和具体数据值区分开。以上的例子是Web Service向Radius Client发送认证数据时的数据格式。
图2 Web Service与RADIUS Client间的信息交互流程
四、Web Service认证功能测试
测试前,先对认证服务器的Web Service与客户端的浏览器之间的认证信息交互进行了测试,由于没有加入RADIUS Client和RADIUS Server,所以在认证服务器的Web Service中编写了一个测试程序,进行本地认证。其具体测试包括如下两方面内容:
(1)Apache经过配置以后是否能正常运作为客户端提供网页服务;
(2)客户端是否能通过Web的方式完成认证。
由于用户的初始认证过程与下层所使用的信道访问方式无关,而我们的测试目的主要是检测软件的功能是否正确,因此,该测试是在有线网中进行的,其中一台计算机模拟认证服务器,另一台模拟客户端。认证服务器的IP地址(即虚拟IP地址)是172.16.3.1,用于本地认证的合法用户名为master,密码为123456。在客户端浏览器地址栏中输入HTTP://172.16.3.1访问认证服务器,显示结果如图3所示。
(A)认证页面
图3 认证服务器返回给客户端的认证页面(A)与客户端的认证成功页面(B)
在图中浏览器的地址栏可以看见HTTPS:// 172.16.3.1/,这说明Apache已经将用户对于80端口的访问成功的重定向到了443端口,采用了HTTPS协议,以实现数据的加密传输。若在客户端的浏览器中输入HTTPS://172.16.3.1直接采用HTTPS的协议来访问认证服务器,其结果与如图3(A)所示结果一致。以上测试说明:用户的主动认证过程既可以采用HTTP协议来访问认证服务器,由认证服务器的Web Service将访问重定向到443端口,以便使用HTTPS协议,也可以由用户直接采用HTTPS协议来完成数据的加密传输。在如图3(A)所示的认证提示页面中输入用户名和密码后,点击“提交”按钮将含有认证信息的页面传送给认证服务器,认证服务器的返回结果如图3(B)所示。图3(B)是一个认证成功页面,说明Apache与测试进程之间已能正确通信。如果在图3的认证提示页面中输入错误的用户名admin和密码123456,户名不存在的提示。若输入用户名master和错误的密码654321则会得到密码错误提示。
五、结束语
RADIUS协议最初作为拨号网络协议,由于它易于管理、可扩展性好等特点而逐渐被广泛使用,成为多种网络的认证、授权的协议。但RADIUS协议仍然存在诸如基于Response Authenticator 对共享密钥的攻击、基于User Password属性对用户密码的攻击等安全缺陷,这些都有待于作进一步的研究和完善。
参考文献
[1] IEEE Std 802.11-1999: Wireless LAN Medium Access Control(MAC) and Physical Layer(PHY) Specifications[S].USA: IEEE, 2006
[2] 赵玉亭,张治,李立欣. 远程拨号接入系统的安全分析与改进口[J]. 计算机应用,2006,24
[3] 陆金山, 基于RADIUS协议的校园网络接入服务器的研究与实现[D]. 合肥工业大学,2006
[4] 吴越,曹秀英等.无线局域网安全技术研究[J].电信科学,2012(6)
[5] 张剑,黄本雄等. RADIUS 协议在无线宽带接入认证与计费系统中的应用[J]. 中国数据通信,2003(6)
[6] Neil Matthew. 叶小虎译. Linux高级编程[M]. 北京:机械工业出版社,2010
[7] 朱建勋. 基于Web和RADIUS的无线局域网接入认证系统[D]. 西南交通大学,2006
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。