时间:2024-06-19
贾 慧
(山西电力职业技术学院,山西 太原 030021)
基于LDAP统一认证系统的设计与实现
贾 慧
(山西电力职业技术学院,山西 太原 030021)
随着公司规模扩大,各种网络服务不断增多,为了保证各种应用服务之间用户的一致性,迫切需要公司系统支持统一认证服务。文章在LDAP的基础上设计并实现了一个统一认证系统,支持单点登录,避免了用户访问不同应用系统时重复验证用户信息的繁琐性,保证了系统在网络环境下运行的安全性。
身份认证;轻量级目录访问协议;统一认证系统
随着公司信息化建设的不断深入,系统不断丰富,各种应用系统逐渐集成到公司网络环境中。一方面,用户在进行身份认证时容易出现密码丢失,一旦密码泄漏便会造成不可估量的损失。而且随着用户数量的增加,网络资源日益丰富,受攻击的可能性就越大。网络安全就是要保障各种网络资源稳定、可靠地运行及受控、合法地被使用。在开放系统互联(OSI)安全体系结构模型中定义了五组安全服务:认证服务、访问控制服务、数据的完整性、数据保密性、非否认服务[1]。因此,认证服务已经成为应用层必不可少的基本安全技术。
LDAP(Lightweight Directory Access Protocol)是基于X.500标准,简化后的目录访问协议[2]。
目录服务将数据库软件的逻辑结构分为客户端和服务器端,LDAP目录通常采用Client/Server模式进行通讯,如图1-1所示[3]。
图1-1 LDAP工作模式
LDAP定义了客户向服务器发送目录访问请求的格式,消息请求的操作类型有:绑定、查找、修改、删除等。LDAP消息在TCP/IP协议上传输,所以能在客户端和服务器端建立和断开会话操作。
Java命名目录接口(Java Naming and Directory Interface,JNDI)提供了基于Java访问LADP服务的API[4]。
JNDI是一个通用化的命名和目录接口。它不仅可以用于访问LDAP目录服务,而且还可以访问NIS(Network Information Services)和 DNS(Domain Name Server)等目录系统。JNDI通过服务提供者接口(Service Provider Interface,简称 SPI)访问特定的底层目录服务,SPI由底层的命名和目录服务提供商以Java类库的形式提供,可以将任意的SPI插入到JNDI框架之中。JNDI的框架图如图1-2所示。
图1-2 JNDI框架图
LDAP目录服务可以实现单点登录,在系统中单点集中(不指物理位置)管理资源。基于LDAP目录服务的这些特点,文章利用目录服务实现统一的认证。目前已经有了许多基于LDAP协议开发出的资源管理系统和工具,如Openldap、NDS、ADS等。
统一认证系统的设计主要考虑以下问题:
(1)单点登录(Single Sign-On,SSO)[5]问题。
(2)统一身份认证系统应为其他应用系统提供一个统一的接口,方便管理员将该系统集成到已有系统中,而且该系统对用户来说是透明的。
(3)考虑到服务端的改动应该不影响其他应用系统对服务的调用,还应该实现统一认证系统与其他系统之间的松散耦合。
统一认证系统采用分布式管理体系结构和分层式管理体系结构相结合的方式进行设计。分布式结构管理者在一个层面上,并且地位是平等的,而分层式是多层结构,上层管理者管理多个下层的管理者。同一公司内部采用分层管理体系结构,公司下属不同子公司间采用分布式管理体系结构。本系统统一认证系统结构如图2-1。
图2-1 统一认证系统结构图
目录服务将系统中的用户、资源统一组织起来,提供一个单一的逻辑视图。目录服务层是系统的底层,目录服务器保存的资料主要包括两部分:
(1)个人用户的基本资料,包括统一认证的账号和口令。
(2)统一认证区域内应用系统的信息。
各分公司内用户统一认证的流程如下:
(1)用户登录到应用系统。
(2)应用系统请求统一认证服务系统认证用户信息,认证完毕将该用户所属用户组信息返回应用系统。
(3)应用系统根据用户所在用户组的级别授予该用户相应的权限。
目录服务接口作为服务的客户端,根据应用程序的要求通过相应的API向目录服务器提出操作请求,并将请求结果返回给应用程序。
OpenLDAP把所有与LDAP服务器相关的配置信息都放在slapd.conf文件中。安全控制列表的配置为:
只有userPassword属性的所有者才能修改上述配置的第一项,用户和管理员可以修改自己的服务地址(attr=service1)。
系统中LDAP目录访问是基于Java名字和目录访问接口JNDI开放的。JNDI提供了基于Java的访问LDAP服务的API。目录访问在实际开发中主要运用到了JNDI开发包中的javax.naming.*和javax.naming.directory.*包。
目录访问实现的主要功能都封装在JavaBean中,包括:目录服务器的绑定/认证、在目录中查询目录项、添加目录项、修改已经存在的目录项、删除目录项等,亦即通过JNDI实现一套基于JNDI的JavaBean,通过在JSP页面中调用JavaBean,从而实现了在网络环境中与目录服务器之间的交互。
统一身份认证系统的应用如下:
(1)用户登录系统,登录界面如图4-1所示。
图4-1 登录界面图
(2)浏览首页内容,如图4-2所示。
图4-2 内部门户信息系统界面图
应用系统导航中集成了不同的应用系统服务。以在线培训系统为例,用户在进入门户系统后,点击在线培训系统,在线培训系统请求统一认证系统认证用户“张三”的信息,认证系统将用户“张三”所在的人力资源部员工的信息返回给在线培训系统。
(3)在线培训系统为用户“张三”设置相应的课程,用户访问在线培训系统时不需要重新登录,也感觉不到统一认证系统的存在,点击在线培训系统后的界面如图4-3所示。用户使用公司内部的任何系统只需要登录一次,提高了系统的使用效率。
图4-3 在线培训系统界面图
该系统实现了应用系统的用户集中管理和统一认证;采用分层和分布式相结合的管理模式,具有良好的扩展性和适应性,能适应复杂的环境,具有一定的应用价值。
[1]赵荣,张雪锋,范九伦.一种新的单点登录认证协议[J].软件导刊,2010,2(9):134-136.
[2]MENG Fan-zi,XIE Qi,LDAP's Framework and Its Practices[M].Computer Technology and Development.2006-10.
[3]V.Koutsonikola,A.Vakali.LDAP:Framework,Practices and Trends.Internet Computing,2004,5(8):66-72.
[4]A.Barman.LDAP Application Development Using J2EE and.NET.Proceedings of the IEEE INDICON 2004,India,2004.494-497.
[5]任传伦,李忠献,钮心忻,杨义先.一种分布式网络环境下单点登录模型[J].计算机系统应用,2011,(2):40-44.
TP393
A
1673-2014(2011)05-0049-03
2011—05—11
贾 慧(1983— ),女,山西太原人,硕士,助教,主要从事网络及网络安全研究。
(责任编辑 郝瑞宇)
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!