6.9 使用.htaccess文件-基于用户名/口令的认证方式

1.基于用户名/口令的认证方式

这种认证方式其实相当简单,当WWW浏览器请求经此认证模式保护的URL时,将会出现一个对话框,要求用户键入用户名和口令。用户输入后,传给WWW服务器,WWW服务器验证它的正确性,如果正确,返回页面,否则返回401错误。要说明的一点是,这种认证模式是基本的,并不能用于安全性要求极高的场合。

Apache中有许多模块可以支持这种认证方式,下面我们就介绍一下最基本、最标准的mod_auth模块。正如前面提到的一样,mod_auth模块使用存储在文本文件中的用户名、组名和口令来实现认证。这种方法非常适合处理少量用户,它能工作得很好。如果你需要对大量的用户,比如数以千计的用户做认证时,这种方法的性能将急剧下降到不可忍受,所以当这种情况下,就需要考虑使用mod_dbm模块或mod_mysql模块来获得更好的性能。

1.修改一个目录的配置:

Apache支持在需要限制访问的目录下,建立.htaccess文件来实行访问限制。

添加mime-type定义

允许或拒绝某个主机

2.设置用户和密码数据库:

AuthUserFile 指令

htpasswd命令:

htpasswd -c /etc/httpd/mypasswd bob

使用htpasswd命令,在密码文件中添加项目。 —c选项将建立此文件,如果它不存在。

3. 用户可以根据httpd.conf中记录的AllowOverride内容,在.htaccess文件添加访问控制语句以取代在httpd.conf中的记录。

AllowOverride authconfig被用于通过特殊的目录文件.htaccess指定能超过哪个和怎样的配置。能通过个别用户去修改某个Apache配置来建立这此文件,它们将不用修改其他的文件。

本质上任何事能在httpd.conf中配置,使用.htaccess文件去修改。这些文件同httpd.conf有相同的格式,并且放置在此目录中的渴望的改变将出现在配置中。

大多数普通执行的任务之一在用户的htaccess文件中添加授权,典型地,一个用户将为目录设置授权,用一个配置保持敏感信息,例如:

# sample authentication .htaccess file

AuthName ‘Bob’s Secret stuff’ (定义受保护的领域的名称)

AuthType basic (定义使用的认证方式,分为basic和digest两种)

AuthUserFile /home/bob/mypasswd (指定认证口令文件的位置)

require user bob (授权给指定的一个或多个用户)

用以上.htaccess文件,任一访问到此目录存储这个文件将需要一个用户名和密码去处理。特别的,仅用户bob被允许,即使如果其他用户在/home/bob/mypasswd文件列表中。注意,你不希望存储你的密码文件在一目录中并可从web存取,如果获得访问密码,它可以被下载和破解。

4. 改变.htaccess文件设置不需要重启httpd

5. Allow Override内容决定.htaccess中记录的有效字句范围:

Option:支持option设定

Authconfig:支持用户认证

Limit :支持基于主机名的访问限制

All:包含以上所有内容

6.举例说明

⑴ 需要用户名和口令的访问控制下面我们就一起来看一下如何建立需要用户名/口令才能进行访问的目录。基本情况: http://www.xxx.com/的站点有设置为:

DocumentRoot /home/httpd/html

AccessFileName .htaccess

AllowOverride All

需求:限制/home/httpd/html/backup/目录的访问,只允许用户"super"以口令"fill-06"访问此目录。

实现步骤:

使用htpasswd建立用户文件

htpasswd -c /home/httpd/secr/.htpasswd super

此程序会询问用户"super"的口令,你输入"fill-06",两次生效。建立.htaccess文件用vi在/home/httpd/html/backup/目录下建立一个文件.htaccess,写入以下几行:

AuthName My Friend Only (注:这个名字是任取的)

AuthType Basic

AuthUserFile /home/httpd/secr/.htpasswd

require user super

设置文件权限,确保Apache用户有读的权限这样就完成了设置工作,你可以试一试效果了。

⑵ 允许一组用户访问一个目录

假设,现在www.xxx.com想让myfriend组中的mf1与mf2两个用户分别能使用口令"mf001-1""mf002-2"访问/home/httpd/html/backup/目录。

实现步骤:

使用htpasswd建立用户文件

htpasswd -c /home/httpd/secr/.htpasswd mf1

htpasswd -c /home/httpd/secr/.htpasswd mf2

建立组文件用vi/home/httpd/secr/目录下建立一个文件.htgroup,写入:

myfriend:mf1 mf2

建立.htaccess文件用vi在/home/httpd/html/backup/目录下建立一个文件.htaccess,写入以下几行:

AuthName My Friend Only

AuthType Basic

AuthUserFile /home/httpd/secr/.htpasswd

AuthGroupFile /home/httpd/secr/.htgroup

require group myfriend

配置工作到此结束,试一试吧!

⑶ 混合使用基于主机与基于用户名/口令的认证方式如果你除了只允许让mf1与mf2两个用户访问外,还想禁止除www.mot.com外的主机访问这个目录的话,就将/home/httpd/html/backup/.htaccess修改成为:

AuthName My Friend Only

AuthType Basic

AuthUserFile /home/httpd/secr/.htpasswd

AuthGroupFile /home/httpd/secr/.htgroup

require group myfriend

order deny,allow

deny from all

allow from http://www.mot.com/

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章