要限制对一个网页的访问,可使用Apache和第三方提供的身份认证模块和方法来验证用户的凭据(如用户名和密码),用户认证指令通常放置在.htaccess文件中。本文介绍如何应用份认证模块和.htaccess文件。 1 N" Q+ g' s# S! r- Z5 E6 D' R / u4 z) `$ `& Y8 M, _. M 7 ~' E _) `9 a0 d' \要限制对一个网页的访问,可使用Apache和第三方提供的身份认证模块和方法来验证用户的凭据(如用户名和密码)。一些模块支持通过各种数据库(包括NIS和LDAP)进行身份认证。 . c4 M: i1 |( _+ A% Q . G8 g6 T( Y3 ~- H J+ g Z* J7 ?* Q
! T$ [" k2 b3 @: X" x . X) K5 P% ?' k& a1 F
用户认证指令通常放置在.htaccess文件中。下面是使用Apache默认身份认证模块(mod_auth)的一个基本.htaccess文件。当这个文件放置在/var/www中时,会导致Apache要求用户输入密码进行验证,然后浏览器才能访问/var/www目录层次结构中的内容。应用时,要用本地服务器的相应值进行替换。 + H2 {5 a: p% w5 E+ X 7 N8 y: V* K+ R) X1 r# cat .htaccess# {& L/ Q* P4 m. r8 H8 G2 `2 V4 l
5 Y8 d: ?% ~# F% I( |9 Q
AuthUserFile /var/www/.htpasswd $ i$ [0 c5 g+ D# @" Q. l ( O0 p. l+ o IAuthGroupFile /dev/null* v( _3 H' H, k1 s R' U3 x
- t& R8 `" Z6 m: r- ^2 HAuthName "Browser dialog box query" 3 m; B+ D+ c( D" ` 1 i e; i. Z* N. N( c. Q2 o
AuthType Basic/ c) M9 q7 E3 ]) K
( s4 X! ]- ~7 J% t& Lrequire valid-user3 A$ n2 ?' n }7 ` T X$ K% b
+ ]5 q" F P# b7 G& v) J. s 0 F7 r w5 N5 y3 D" d# @4 a$ _ 9 P5 U$ u9 W$ B: |3 T; |9 L
/var/www/.htpasswd是一个.htpasswd文件的典型绝对路径名,用户在要求输入用户名和密码的对话框中会看到字符串Browser dialog box query。 6 L0 B' K- P. a1 {7 C + ~; o; }( @9 b: b1 S
$ P- d, M9 r; l9 v
$ Z3 A- [ X* U5 @. J
前面.htaccess文件的第二行关闭组功能。第四行指定用户的身份认证类型为Basic,这也是mod_auth模块的默认设置。最后一行告诉Apache哪些用户可以访问受保护的目录。valid-user条目会授权任何用户(用户名在Apache密码文件中并且输入的密码正确)访问该目录。2 R& Q& C( O' z& L2 E) K2 B& {3 w
E8 V" q; V. p4 S 4 s. R$ u7 w7 R- y+ p0 J( s ( H! d; g. e% N+ [7 s8 F k" m
只要Apache可以读取其密码文件,该文件可放在系统上的任何地方。把这个文件与.htaccess文件放在同一目录下也是安全的,因为默认情况下,Apache将不会对名字以.ht开头的任何文件的请求进行回复。但是一定不要更改httpd.conf配置文件,以防Apache对名字以.ht开头的文件的请求进行回复。! E0 S+ u1 j" b' |1 j' x
* A- [* W' ?6 {" A+ {8 y' \ 1 u, I8 ~; M' X% k. R8 Z - B7 v: P# z7 r下面的命令将在工作目录中创建(–c)一个带有Sam条目的.htpasswd文件。省略–c选项可以在现有.htpasswd文件中添加用户或更改密码。 + s/ z$ c% C* L- M& y. Z - L" \+ Z& v. L) N7 u; j# h4 n$ htpasswd -c .htpasswd sam$ A# J% x% _6 s# N5 H4 `6 ^5 W; \& K t
( B2 E. f% ~5 d( x+ l4 n L. t5 M
New password: 4 Z) i, K- G3 Q# W " b1 P5 k V( o' `! C( _7 [
Re-type new password:' s- a# ~8 X( d
# G6 I4 ~# t# Y, i# _5 S( KAdding password for user sam 4 C7 ^3 B, @5 Y$ s/ P; k1 ? 8 v/ w' M/ W& V0 F1 G+ w
3 H: w$ a; f, G0 ^. c3 L " n# F9 p' H) e7 J( ~
默认的httpd.conf文件包括用于/var/www的AllowOverride None指令。要启用Apache来处理用户认证指令(如读取.htaccess文件),必须将这个指令更改为AllowOverride AuthConfig或将其删除。1 n* p+ l; ?% t: V. Y9 N
8 m, m2 @# k' q4 t( X 2 O- m6 p' b3 t1 p, S; H 0 v- Z# S) p4 H& d在Apache已配置为可处理.htaccess文件后,当它收到对文件的请求时,必须从所请求的文件向上遍历目录层次结构一直到根目录,查找.htacess文件,以确定它是否可以提供该请求的文件。此搜索可能会影响性能。通常情况下性能下降不太严重,但如果性能很关键,则这个问题将很棘手。