基于开源软件的数字图书馆资源远程访问的总设计

2011-05-17 02:49温明章
现代情报 2011年1期

温明章

〔摘 要〕针对目前数字图书馆资源远程访问困难的实际情况,设计一个基于开源软件(apache和josso)的远程访问系统,此方案是一个设有身份认证、日志记录和负载均衡等功能的完整设计方案,便利了读者在校外远程访问图书馆电子资源。

〔关键词〕url重写;远程访问;josso;apache

DOI:10.3969/j.issn.1008-0821.20.01.016

〔中图分类号〕G250.76 〔文献标识码〕B 〔文章编号〕1008-0821(20)01-0063-04

The Total Design of Remote Access System for Digital

Library Resources Based on Open-source SoftwareWen Mingzhang

(Library,South China Agricultural University,Guangzhou 510642,China)

〔Abstract〕According to the difficultness that remote access to digital library resources,the author designed the Remote Access System for Digital Library Resources based on Open-source software,this program was a complete design that set up authentication,logging,and load balancing features,facilitate the readers in the off-campus remote access to library electronic resources.

〔Keywords〕url rewriter;remote access;josso;apache

现在全国图书馆都以数字图书馆为建设目标,而且都已经有几年的建设基础了。在数字图书馆建设中,网络数据库(电子资源)为重点建设对象;目前每个图书馆都有各种各样的网络数据库(电子资源)可供读者通过网络进行查询、浏览和阅读,但是这些网络资源都是对读者进行ip控制,读者只有使用学校内部网络才可以访问;有些学校已经意识到这种限制不利于读者在校外学习和工作,并且在网络中心的帮助下引入vpn技术来解决校外访问图书馆资源的IP限制问题;但是这种方法只是暂时的,在读者数量大的情况下,vpn的用户数不够用,而且有一致命弱点就网络速度慢。从以上问题来看,本设计方案就是要解决校外访问图书馆资源IP限制问题,而且读者数量不受用户数量的限制,在网络速度上有很好的优化。

1 设计思路

本设计方案是实现校内的图书馆网络资源的共享服务,它采用URL重写技术、单点登录和统一认证技术,实现基于Web数字访问对象、内部办公访问的安全认证系统,通过认证读者与电子访问对象服务器、内部办公服务器的直接通讯,而且进行负载均衡设计,从而避免代理服务器和vpn等方式易导致的网络瓶颈、配置复杂和难于管理等问题。

该设计方案考虑进一步延伸信息提供者的服务空间与拓展网络接入者的接入范围,将现有局域网上基于Web的远程访问系统功能、内网办公平台等通过Internet网络拓展到用户家庭、出差酒店、会议室等互联网上世界的任何一个角落。

1.1 系统硬件设计

远程访问服务器部署在图书馆校外可以访问的网上或校网络中心出口网络上,设计采用1台(配置:四核CPU内存为2.3G,2块 000兆自适应网卡的服务器作为远程访问认证服务,并分别配置3~4个或更多个远程访问服务器及对外固定IP地址,实现远程访问服务,防止因单个IP地址实现远程电子数据库的访问被供应厂商监控或访问用户下载速度受影响。

本设计方案可以将图书馆所属的电子资源进行访问负载分配,特别是针对远程电子数据库的访问需要进行地址负载分配和流量负载分配。见图1所示。

图1 系统硬件设计

1.2 应用结构设计

对于基于Web发布的电子资源,系统采用基于URL重写技术,以及单点登录技术(SSO),来实现读者透明的访问,对于基于Web的图书馆电子资源,读者可以不用安装任何插件和修改任何设置,即可随时随地访问图书馆的电子资源。

系统硬件主要由2个部分组成:身份认证服务器和URL重写服务器机群。身份认证服务器运行在一台独立的服务器上,主要提供用户身份验证及权限管理、流量控制及日志记录等功能。URL重写服务器机群运行在多台服务上,对读者所有的http请求的URL进行重写控制和管理等功能。

3 系统功能和系统工作流程

系统软件主要使用开源软件,身份认证(安全认证)使用Josso,远程访问系统使用Apache Web Server;读者通过Web浏览器访问远程访问系统,远程访问系统通过LDAP协议调用Josso进行身份核对和认证(Josso通过Mysql数据的读者已经注册信息来核对),如果没有认证过的,则要通过Josso认证后才可以访问远程访问系统;当读者通过Josso认证后,访问远程访问系统的电子资源时,系统对相应的读者请求进行URL重写和管理,并且对读者的各种网络行为进行跟踪和记录,最后把读者想要的正确信息发回给读者;系统工作流程可以参考图2。

系统具体功能设计如下:

(1)身份认证(单点登录和统一认证);

(2)URL重写功能;

(3)负载均衡;

(4)日志功能。

2 安全设计

目前身份认证技术非常发达,认证的方法也很多,例

图2 工作流程

如:USBKEY认证、基于SSL的HTTPS证书认证、电子令牌、与SSO认证等等。本设计方案使用SSO认证方式,而且远程访问系统可以与SSO认证服务无缝集成。

SSO认证方式有以下优点:

(1)减少用户在不同系统中登录耗费的时间,减少用户登录出错的可能性;

(2)实现安全的同时避免了处理和保存多套系统用户的认证信息;

(3)减少了系统管理员增加、删除用户和修改用户权限的时间;

(4)增加了安全性:系统管理员有了更好的方法管理用户,包括可以通过直接禁止和删除用户来取消该用户对所有系统资源的访问权限。

3 软件设计以及关键技术的实现方法

本设计方案的软件设计将使用开源软件Apache和Josso,具体实现方法,下面将具体介绍。

3.1 URL重写技术

本设计方案使用Apache的ModzRewriter和ModzProxy功能模块实现重写功能;图书馆的电子资源实际URL,都在远程访问系统上有对应重写过的URL,这里就以Cnki为例,Cnki实际URL为:http:∥www.dlib.cnki.net/kns50/,重写到远程访问系统上为:http:∥外部ip/kns50/;具体流程和重写规则如图3[4]。

图3 重写URL原理

模块具体实现配置如下:现在到Apache的http.conf上加载ModzRewriter和ModzProxy模块,然后在文件尾部加入下面代码:

RewriteEngine on#启动URL重写功能;

Proxyrequest on #启动代理功能;

RewriteRule^(.*)。模S 。模S1/ [R]

#解决结尾斜杠问题,如果访问http:∥localhost/cnki时,重写为#http:∥localhost/cnki/rewriterule ^/kns/(.*)。模S http:∥www.dlib.cnki.net/kns50/。模S1

启动Apache就可以看到如图4效果:图4 实现重写URL的效果

更多具体的配置,可以读者感兴趣的话,可以到Apache网站上下载使用文档了解更多的信息,这里就不具体展开。

3.2 安全认证(单点登录和统一认证)

3.2.1 Josso工作原理

本设计方案安全认证使用Josso开源软件来实现,并且与Apache进行无缝集成。Josso单点登录技术通过基于信任主机的跨域名Cookie技术来实现,由于用户的登录信息需要保存在Cookie里,但IE的安全性不允许Cookie跨域名或IP地址。因此,Josso当通过用户输入的用户名和口令(或者使用其它方式)对用户进行验证成功后,将发送一个身份标识给用户并将其存放在用户浏览器的Cookie里面,然后将用户重定向到所请求的服务上。如果读者访问其他服务器时,则共享读者第1次登录后信息不需要重新认证,上述过程对用户是透明的,从而实现了单点登录。

3.2.2 Josso与远程访问系统集成

Josso是在LDAP基础上与Apache Directory Server进行无缝集成,从而使得Josso与远程访问系统集成。

具体配置如下:

(1)Apache Directory Server:

class=″org.apache.directory.server.ldap.LdapConfiguration″>

进行配置。

输入认证信息,这里的信息从之前提到的server.xml中获得,比如其中Bind DN or user和Bind password分别为server.xml中的

uid=admin,ou=system

secret

的值。

(2)Josso的LDAP的配置如下:

配置Josso的josso-gateway-config.xml:

①修改中的内容如下:

org.josso.gateway.identity.service.store.ldap.LDAPIdentityStore

com.sun.jndi.ldap.LdapCtxFactory

ldap:∥localhost:10389/

uid=admin,ou=system

secret

simple

SUBTREE

ou=People,dc=example,dc=com

uid

ou=Roles,dc=example,dc=com

uniquemember

cn

uid=username,mail=password

mail=mail,cn=description

②修改中的内容如下:

org.josso.gateway.identity.service.store.ldap.LDAPIdentityStore

com.sun.jndi.ldap.LdapCtxFactory

ldap:∥localhost:10389/

uid=admin,ou=system

secret

simple

ONELEVEL

ou=People,dc=example,dc=com

uid

ou=Roles,dc=example,dc=com

uniquemember

cn

uid=username,mail=password

mail=mail,cn=description

SUBTREE