1.apache web服务器包含一些不同的身份验证模式,这些模式可以用于判断用户输入数据的有效性。最简单的是使用mod_auth,它将用户-密码对与服务器中的一个文本进行比较。该验证将用到.htaccess文件.
2.关于.htaccess文件,该文件用于在一个目录中开启基本的身份验证功能,可以在该文件中修改许多设置,先举个例子
ErrorDocument 401 /chapter11/rejection.html
AuthUserFile /home/book/.htpass
AuthGroupFile /dev/null
AuthName "Realm-Name"
AuthType Basic
require valid-user
第一句的意思是告诉apache对验证失败的访问者显示什么样错误的文档,其基本语法为ErrorDocument error_number url,需注意给出的url得能正常访问
第二句的意思是告诉apache在哪里可以找到包含已经通过身份验证的用户的密码文件,通常这个文件是.htpass,当然也可以任意更名,通常为了安全,需把该文件放在web目录外面。
第三句的意思是告诉apache与指定通过身份验证的单个用户一样,指定只有在特定组中通过身份验证的用户才能访问的资源也是可能的,但是这样做不是很安全,因此我们把AuthGroupFile指向/dev/null,这是在类UNIX系统中的一个特殊文件,可以保证该文件为空
第四句:要使用HTTP身份验证,需指定命名保护区域,可以根据自己的喜好任意设定区域名称,这里设定为Realm-Name,
第五句:由于apache支持多种不同的身份验证的方法,因此必须指定使用哪一种验证方法,该句表明使用Basic身份验证方法
第六句:require指定允许访问的访问者,我们可以指定的特定用户和特定组,这里指定了任何有效用户都可以访问
3.上面提到的.htpass文件的确切内容会有所不同,要创建它,可以使用一个名为htpasswd的小程序,该程序包含在apache软件包中,以下是两种使用方法
htpasswd [-cmdps] passwordfile username
唯一使用的开关是-c,该选项告诉htpasswd创建文件,必须是添加第一个用户的时候使用,否则文件会被删除并重新创建
htpasswd -b[cmdps] passwordfile username password
-b选项告诉程序期望密码作为它的参数,而不提示输入密码,mdps用来指定使用哪种加密算法来保存密码
通常该程序包含在apache目录下的bin目录下
4.用上述方法来进行身份验证较为简单,但是也存在问题,当浏览器每次请求的时候都需要解析一遍.htaccess文件,再去解析密码文件。也可以直接把该文件的内容直接写入httpd.conf,但该文件只有在服务器启动时候解析,但修改起来较为麻烦
5.上述所写的是apache的mod_auth模块,但是由于他将信息保存在一个文本文件中,因此对于拥有广泛用户群的繁忙网站,使用该模块不太实际。除了该模块外,apache还提供了mod_auth_mysql模块,两者非常类似,但是后者是使用了Mysql数据库中替代文件来保存用户名和密码,所以可以才大量用户中进行搜索,鉴于本屌很少看到有网站使用这两种身份验证方式,后者也就不多介绍了,等用到了再来翻书。
题外话:今天下班回来已经快10点了,又坚持看了一章,这本书已经看了一半了,写这些东西完全是为了激励自己坚持学习,虽然内容也不咋滴,也权当自娱自乐吧