Apache Server使用Basic Authentication进行验证保护

王朝system·作者佚名  2006-01-09
宽屏版  字体: |||超大  

由于网站的需要,需要有一个目录的内容只能供特定的用户访问,因此浏览了一下apache的文档说明(http://httpd.apache.org/docs/howto/auth.html#intro),特此记录下来,同时也希望能够帮助英文不好的同仁们。另外,我还参考了一些google搜索的内容,感觉国内的介绍大都出自该文档,但过程和其中的一些概念似乎介绍的不太清楚,因此在这里略作补充。

1. AAA的概念

AAA可是安全界的老概念了(Authentication, Authorization, Access Control),也即认证、授权以及访问控制。

认证,是指证明你自己的身份,在计算机中就是出示用户名和密码。这是最简单的,还有比如智能卡,指纹验证之类的。总之,要证明那个人是你。

授权,是指对认证用户的权力进行设定。一般是根据一个配置文件,来对用户的权力进行设定。

访问控制,则是根据用户权力,判断是否可以访问特定资源。

*这三个概念,经常在一起使用,没有明确界线。

2. Basic Authentication的原理

这个简单,你发送一个HTTP GET请求,服务器发现你请求的文件需要访问控制。OK,它回应你一个消息(401号消息),告诉你需要提供你的身份信息。这时,浏览器弹出需要密码的窗口,输入后,浏览器重新发送GET请求,同时附带认证信息。如果正确,则请求被执行,反之,请求失败。

3. Apache Server中服务器认证的使用

当然,php、jsp页面中作认证也是可以的。我们这里只讨论劳动量最小的:) 即使用apache server的特性的方法。

1) 制作passwd文件

使用htpasswd命令(在apache安装目录的bin中),可以生成passwd文件。passwd文件的每一项有两部分组成。

<用户名>:<加密密码>

加密密码使用加密算法生成,htpasswd工具可以代劳帮助我们计算加密密码。最简单的命令行是

htpasswd -c mypasswd yangsun

mypasswd是密码文件的名字,yangsun则是用户名了,hoho

制作完passwd文件,把它放在一个妥善的位置,千万别放在网页服务器可以通过http得到的文件夹中(当然,通过特殊设置可以放在文件夹中,而不能被下载,这个以后分解

)。否则,你的加密密码一定会被破解的,要不linux干吗要shadow它的passwd文件呢?

2) 在你需要保护的文件夹下,放置.htaccess文件

就如这个

AuthType Basic

AuthName "By Invitation Only"

AuthUserFile /usr/local/apache/passwd/passwords

Require user yangsun

其中 AuthUserFile指定了刚才我们创建的密码文件的完全路径。而Require User则指明谁可以访问该目录。

通过这样的设置,就完成了Basic Authentication的密码保护了。不过,发送密码可都是明文的,会用tcpdump的都可以把这个密码拦下来,因此重要文件还是用其他方式保护吧。比如MD5方式,具体请参见apache的文档。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有