在上篇博文中介绍了基于客户端地址的访问控制,这种方法设置起来相对比较简单,但是不具备太大的实用价值。在实际应用中,我们大都是希望通过对用户进行身份验证从而来进行访问控制,在这篇博文中将主要介绍这种基于用户的访问控制方法。
在前面介绍IIS的时候曾提到过,在IIS中进行用户身份验证有3种方法,按照安全级别由高到低分别是:Windows身份验证、摘要式身份验证、基本身份验证。其中使用比较多的是基本身份验证。
Apache支持的身份验证方法有基本认证(Basic)和摘要认证(Digest)两种,应用较多的同样也是基本认证。下面就以基本认证为例来进行介绍。
同基于客户端地址的访问控制一样,基于用户的访问控制也是只能针对服务器上的某个目录进行设置,设置内容必须包含在<Directory 目录> …… </Directory>的区域中。
我们仍以www.example.com站点中的虚拟目录/movie为例来进行设置,要求只有输入用户名harry或natasha以及相应的密码才能访问www.example.com/movie。
修改配置文件/etc/httpd/conf/httpd.conf,在www.example.com站点的虚拟主机区域设置部分中添加如下的内容:
如果Apache中并没有启用虚拟主机,那么可以将下面图中的这部分区域设置内容添加在配置文件中的Main server部分。
下面对其中的设置项目进行解释:
<Directory “/movie”>……</Directory>,表示对目录“/movie”进行访问控制设置。
AuthName:定义受保护的领域名称,客户端访问时在弹出的认证登陆对话框中将显示该名称。
AuthType:设置认证的类型,Basic为基本认证
AuthUserFile:设置用于保存用户帐号、密码的认证文件路径。(文件可以自由定义,但通常都是保存于/etc/httpd/conf目录中,并采用.htpasswd的文件名,文件名前面加.表示隐藏文件。)
require valid-user:授权给认证文件中的所有有效用户。这一项也可以写成“require user [用户名]”,指定一个具体的用户,这样无论认证文件中如何定义,也只有该用户才可以访问。
修改完配置文件后,保存退出。
下面再来添加认证用户,需要注意的是,这个认证用户与系统用户没有任何关系,也就是说我们并不需要先创建相应的系统用户,而是可以直接来添加认证用户。
对认证用户进行管理需要用到htpasswd命令,执行下面的命令创建.htpasswd文件并向其中添加harry用户。
命令中用到的两个选项的含义:
-c,创建用户认证文件 -m,MD5加密
如果要再加入别的用户,那么就不再需要-c选项。下面继续将natasha添加为认证用户:
我们可以查看一下这个认证用户文件,其中的用户密码都经过了MD5加密:
全部设置完成后,重启httpd服务使配置生效:
# service httpd restart
最后在客户端访问测试,在访问www.example.com/movie时提示要输入用户名和密码。成功通过验证后,可以顺利访问到该页面。
本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1207231