要限制对一个网页的访问,可使用Apache和第三方提供的身份认证模块和方法来验证用户的凭据(如用户名和密码),用户认证指令通常放置在.htaccess文件中。本文介绍如何应用份认证模块和.htaccess文件。
) \$ |# `. ]6 l8 l
1 u! b# P2 ^: F+ w. W, Y
0 I. s Z. s, L9 u2 M+ f4 Q6 w要限制对一个网页的访问,可使用Apache和第三方提供的身份认证模块和方法来验证用户的凭据(如用户名和密码)。一些模块支持通过各种数据库(包括NIS和LDAP)进行身份认证。5 M3 }9 q! S% I2 Q7 ]+ Z
2 B, S1 [9 F3 w+ n6 J C6 y
8 b" V5 K) H3 s. Z W$ {. a [6 d! m1 b
用户认证指令通常放置在.htaccess文件中。下面是使用Apache默认身份认证模块(mod_auth)的一个基本.htaccess文件。当这个文件放置在/var/www中时,会导致Apache要求用户输入密码进行验证,然后浏览器才能访问/var/www目录层次结构中的内容。应用时,要用本地服务器的相应值进行替换。
9 L+ D" X" H6 K
2 p) J! b' N3 Q* P# cat .htaccess+ ^) K2 N5 Y, C# ~
6 }* x2 a6 Z" m9 _9 z$ v1 [& C* @AuthUserFile /var/www/.htpasswd/ C& m7 M) f; e' M) E$ K
2 n" S' r/ j; m, v3 u1 PAuthGroupFile /dev/null) E& ?+ _4 ~. D" ~+ g; q% N
" V" A9 G- w5 h; @1 z. Y: N4 L5 W, _AuthName "Browser dialog box query"
3 Z; P2 K7 Q$ b. m$ h! ~6 U
$ Z$ t& f1 S" c$ KAuthType Basic4 L( J7 G0 E! b; R5 C) C' h
5 Y/ u0 {' p& ^, v4 {% @6 e
require valid-user: K( ?! J( {- y
+ d, A5 X! T" y% a2 x- \* q # m, ~- r4 H, u' O$ C4 q
7 X, U" G# F" R/ J, M0 {3 w
/var/www/.htpasswd是一个.htpasswd文件的典型绝对路径名,用户在要求输入用户名和密码的对话框中会看到字符串Browser dialog box query。- [0 Y) Y( b% Z$ t5 {7 M' O2 L3 _
/ Q3 j, S: u$ A2 [, w3 u# j1 ?3 a % j. J$ e* C5 K4 M" r* P5 X+ g
; ^, Y }5 z: G ~
前面.htaccess文件的第二行关闭组功能。第四行指定用户的身份认证类型为Basic,这也是mod_auth模块的默认设置。最后一行告诉Apache哪些用户可以访问受保护的目录。valid-user条目会授权任何用户(用户名在Apache密码文件中并且输入的密码正确)访问该目录。
0 |2 H; m7 z6 c
) J, M4 I$ @% q2 a$ O# o( Y8 v! u
0 Z: d6 ]$ [. @" A) l 2 m- f5 ~$ Y) o3 W9 o; \
只要Apache可以读取其密码文件,该文件可放在系统上的任何地方。把这个文件与.htaccess文件放在同一目录下也是安全的,因为默认情况下,Apache将不会对名字以.ht开头的任何文件的请求进行回复。但是一定不要更改httpd.conf配置文件,以防Apache对名字以.ht开头的文件的请求进行回复。
+ P* X$ C! f; ~3 G* |) C# D. g; r
- ^+ p, l- i$ T1 M, u: e 1 q; C# Y+ y* x8 O/ X
6 d/ Y' V9 a1 e+ g
下面的命令将在工作目录中创建(–c)一个带有Sam条目的.htpasswd文件。省略–c选项可以在现有.htpasswd文件中添加用户或更改密码。) H- b* S' v% h7 T6 R
0 w- f8 v2 h( T. [" `" e+ Y* t3 x$ htpasswd -c .htpasswd sam
& k0 }8 A( v" ~, h7 X 1 Y- g7 B/ ^2 r7 r
New password:
( i' g1 \3 V" ] / H9 P/ R( h2 M* _. t/ N/ ?, ?
Re-type new password:9 |+ P x8 u" @$ E
2 o5 j4 p0 S9 ?5 B N- AAdding password for user sam; `$ j$ e K1 y# X! B- T& f% a
9 b, Y% [* p5 y. q0 D / ~& B4 t& d& V1 w* ^. p
3 z7 ^+ y3 n) T: G默认的httpd.conf文件包括用于/var/www的AllowOverride None指令。要启用Apache来处理用户认证指令(如读取.htaccess文件),必须将这个指令更改为AllowOverride AuthConfig或将其删除。
5 l5 _3 u" I9 |5 d
# f# P/ Z+ ]& n2 F; y) k1 O* l $ b, `( |7 U/ R1 L, V0 {
7 ]' A7 H9 O7 B0 c7 _! r& F
在Apache已配置为可处理.htaccess文件后,当它收到对文件的请求时,必须从所请求的文件向上遍历目录层次结构一直到根目录,查找.htacess文件,以确定它是否可以提供该请求的文件。此搜索可能会影响性能。通常情况下性能下降不太严重,但如果性能很关键,则这个问题将很棘手。 |
|