基于应用程序级的Apache认证配置(普通认证篇)

来源:互联网 发布:淘宝网男士睡衣 编辑:程序博客网 时间:2024/04/29 22:30
基于应用程序级的Apache认证配置(普通认证篇)
作者:雨水  日期:2007-03-23 转载请保留此处
 
Apache服务器提供了两种用户认证方式,即普通认证和摘要认证。在网上有很多讲如何配置Apache普通认证的文章,但是它们几乎都是类似告诉你如何去保护某个文件夹的文件之类的配置方法。
如果你的需求是对所有的HTTP请求都认证,并且针对认证后的请求做出相应的处理,这又该如何配置呢?这里也跟我这里题目有关。首先我要解释一下它。这个题目为什么叫基于应用程序级呢?也就是说这里的配置不是为那些将Apache用于网页浏览的Web服务器配置,而是为需要在Apache上做应用程序开发,处理自定义业务的用户。要对所有的HTTP请求自己再加自定义的处理,因此就必须编写了自己的Apache模块,并定义了处理方法,这里叫hello-bdb。
首先,配置httpd.conf文件。你需要在conf目录下的httpd.conf文件中加入(位置不重要,但必须放在最顶层)如下配置:
<Location />
    SetHandler hello-bdb
    AuthName "Server Infomation"
    AuthType Basic
    AuthUserFile D:/Apache22/conf/htpasswd.pwd
    require valid-user
</Location>
针对上述配置的解释:
(1)SetHandler 是增加的自定义处理,也就是自己编写的处理模块;
(2)AuthName 后面是服务器信息,你可以替换成任意字符,最好用能反应你服务器信息的字符串,这里个信息会显示在输入用户和密码的对话框中,见后面的图;
 
(3)AuthType 后面是认证类型,Basic表示普通认证。摘要认证相应的指令是Digest;
(4)AuthUserFile 后面是你存放用户名和密码的文件,后面会介绍如何生成该文件;
(5)require valid-user表示配置文件中的合法用户都可以访问。
 
其次,生成用户名和密码文件。这时要使用Apache提供的htpasswd工具。方法如下:
htpasswd -bc ../conf/htpasswd.pwd user1 1234
上述命令生成htpasswd.pwd文件,并向其中加入用户user1,密码为1234。
如果成功了,系统会提示如下。
Automatically using MD5 format.
Adding password for user user1
最后,运行。在浏览器中输入http://localhost。会弹出图示如下的对话框:

分别输入用户名user1和密码1234,然后系统通过认证后,进行自定义的处理,然后会将处理结果返回到浏览器。
大家一看就感觉上面的普通认证安全性不高,并且用户名和密码在传输过程中也只进行了Base64编码,很容易被窃取。摘要认证的安全性要比普通认证高,缺点就是不是所有的浏览器都支持它。
在另外的文章中,我会介绍摘要认证的配置方法。如有疑问欢迎评论或来邮
原创粉丝点击