概况

在标准配置下,EZproxy允许在user.txt定义的所有用户访问在config.txt定义的所有数据库。在某些情况下,可能有必要限制只有特定用户有权访问某些特定数据库。下列文件详细介绍如何配置EZproxy来实施这些限制。它假定你对如何配置config.txtuser.txt文件有一个基本的了解。

数据库供应商与来自多供应商的特定数据库

在继续之前,理解下面概念很重要。在这个讨论中,一个“数据库”代表在config.txt文件的以一个Title行起始的一个或多个部分,这意味着这些配置选项是在一个数据库供应商的级别运作的,而不是指一个特定数据库。

特别是,EZproxy可以区分由2个不同供应商提供的数据库(如Gale Business ASAP 与EBSCO Business Source Plus),但是通常不能区分由同一个数据库供应商提供的2个数据库(如Gale Business ASAP 与Gale Expanded Academic ASAP)。

当EZproxy开始处理user.txtconfig.txt,它开始假设当前组是一个名为Default的特殊组。在没有其他组的指令的情况下,所有用户和所有组都在Default组,所以每个人都可以有权访问所有数据库。

无论用户还是数据库的定义都可以与一个或多个组相关联。为了使一个用户能有权访问一个数据库,这个用户必须是在与这个数据库相关联的一个组里。

启动前的一个指令

在启动组访问之前,应该发出以下命令之一:

./ezproxy -mg       (Linux/Solaris)
ezproxy -mg   (Windows)

这个指令在docs子目录中创建logup.htm文件。如果一个用户试图访问一个数据库,但是没有被授权,这个文件将被发送。在默认格式下,这个页面作为一个登陆页面出现。如果用户有多个访问账号(如有多个不同授权的读者证),这是有用的。根据你的需求,你可能想要删除登陆部分,将这个文件更改为一个简单的声明即此用户无权访问这个数据库。

配置示例

开始,考虑这些样本配置文件:

config.txt

Group Legal
# Databases from here until the next Group statement are in the Legal group(从这里开始直至到下一个组声明的数据库都属于Legal组)

Title Some Database available only to law students(只授权给法律专业学生的Some Database)
URL http://www.somedb.com
Domain somedb.com

Group General
# Databases from here until the next Group statement are in the General group(从这里开始直至到下一个组声明的数据库都属于General组)

Title Other Database available to all(授权给所有用户的Other Database)
URL http://www.otherdb.com
Domain otherdb.com

Title Another Database available to all(授权给所有用户的Another Database)
URL http://www.anotherdb.com
Domain anotherdb.com

user.txt

# Make the current group General(使当前组为General)
::group=General
# Users from the general.txt file will be in the General group(来自general.txt文件的用户将在General组)
# but not in Legal, so these users will be blocked from Some Database(但是不在Legal组,所以这些用户将被阻止访问Some Database)
# but have access to Other Database and Another Database(但有权访问Other Database和Another Database)
::file=general.txt

# Now make the current group the combination of General and Legal(使这个组为General和Legal的组合)
# so these users have access to all resources(所以这些用户能访问所有资源)
::group=General+Legal
# Users from special.txt and the rdoe user will be the General and Legal groups(来自special.txt的用户们和rdoe用户都在General和Legal组)
::file=special.txt
rdoe:secret:admin

最简单的组配置就是像这样:将数据库分为几个特定的组,将用户放置在不同组的组合,允许他们访问适当的数据库。

测试

在这个配置,添加rdoe为一个管理用户,以帮助诊断配置。如果你以rdoe身份登陆,你可以去

http://ezproxy.yourlib.org:2048/groups

对于这个配置,这个页面看上去像这样:

  Default Legal General
Some Database available only to law students   *  
Other Database available to all     *
Another Database available to all     *

此页面显示哪些数据库开放给哪些组的成员。

请注意,Default组会出现在所有EZproxy配置中,不过既然在配置示例中没有分配任何数据库给Default组,所以没有一个数据库出现在Default组。

要测试用户访问,你将使用这些URL:

http://ezproxy.yourlib.org:2048/login
http://ezproxy.yourlib.org:2048/mygroups
http://ezproxy.yourlib.org:2048/logout

你将使用“Login”网址登录来自不同文件的不同用户名和密码。一旦登录,使用“mygroups”网址看到类似这样的页面:

你是下列组的一个成员
  • Legal
  • General

这显示用户被授权访问的组。

“Logout”网址可以被用来结束你的EZproxy对话。一旦你这样做,你就可以从“Login”网址开始另一个对话。通过这个流程,你可以证实用户会如预期那样在组里结束对话。

使用其他身份验证方法分配组

如果使用类似FTP方法验证用户,那么你的user.txt文件可能看上去像这样:

::ftp=ftp.yourlib.org

如果你想通过FTP验证用户,但想放置一组用户在一个不同组,你需要更改user.txt,看上去像这样:

::group=General+Legal
::ftp=ftp.yourlib.org,file=special.txt
::group=General
::ftp=ftp.yourlib.org

如果rdoe和lsmith是可以访问限制数据库的用户,那么special.txt可能看上去像这样:

::ignorepassword
rdoe
lsmith

在这个配置中,“,file=special.txt”的使用作为第一个FTP访问的一部分,表明EZproxy在试图使用FTP验证此用户之前,应先检查看此用户是否在special.txt有效。在special.txt文件,“::ignorepassword”表示EZproxy在处理在special.txt中的用户时应忽略密码,而只需检查用户名。因此,如果提供的用户名是rdoe或lsmith,EZproxy将尝试FTP服务器,但如果是其他用户名就不会。如果FTP服务器认证了rdoe或lsmith,那么用户可以访问限制数据库。如果用户没有出现在special.txt,那么就跳过第一个FTP检查。限制数据库组将从访问中清除,所有其他用户将通过FTP检查。

“,file=”作为一个过滤器的使用与所有内置的身份验证方法一起工作是有效的,虽然它与外部CGI认证不兼容。

特定身份验证方法

某些特定EZproxy身份验证方法有它们特定的分配用户子集到组的方式。详情请参阅有关特定身份验证方法文档。

困惑?

使用EZproxy时,组的应用是其最先进观念之一。如果你知道你想如何分配用户的访问,但上述信息没有提供足够细节帮助你实现,请发送有email到support@oclc.org,并描述所涉及的数据库,你打算如何验证用户(如文本文件、FTP等),如何区分不同的用户组。