用户认证模块所用相关命令知识扩展
要使用用户认证功能,你需要确保mod_authn_core或mod_authz_core模块在器在安装时就编译进了服务器内或者在apache主配置文件内加载上述2模块之一。
1[root@localhost ~]# grep "mod_authn_core" /usr/local/apache/conf/httpd.conf 2LoadModule authn_core_module modules/mod_authn_core.so 3 4 5[root@localhost ~]# grep "mod_authz_core" /usr/local/apache/conf/httpd.conf 6LoadModule authz_core_module modules/mod_authz_core.so
用户认证代码块举例
1<Directory "/www/docs"> 2 AuthType Basic 3 AuthName Documents 4 AuthUserFile "/usr/local/apache/passwd/passwords" 5 Require valid-user 6</Directory>
AllowOverride
语法:AllowOverride ALL|None|drective-type
默认值为None
drective-type
-
AuthConfig
配置用户认证时指定
表示允许使用认证相关指令如AuthName、AuthType、AuthUserFile
AllowOverride AuthConfig
-
FileInfo
表示允许使用如下控制命令:
文件类型(如ErrorDocument)、文件元数据(如CookieDomain)、
rewrite模块相关(RewriteCond)、alias模块(Redirect)、
actions模块(Action)
AllowOverride FileInfo
-
Indexes
表示允许使用如下控制目录索引相关的命令:
如AddDescription, AddIcon, AddIconByEncoding,
AddIconByType, DefaultIcon, DirectoryIndex,
FancyIndexing, HeaderName, IndexIgnore等
AllowOverride Indexes
-
Limit
表示允许使用如下控制主机访问相关的命令:
如Allow、Deny和Order
AllowOverride Limit
-
Options
表示允许使用如下的诸多特殊目录结构相关的命令:
如Options和XBitHack命令内的参数
例如Indexes、MultiViews就是Options命令内的参数
AllowOverride Options=Indexes,MultiViews
另外上述参数可以组合使用如:
AllowOverride AuthConfig Indexes
AuthType
语法 AuthType None | Basic | Digest | Form
前提开启AuthConfig配置AllowOverride AuthConfig
为了使用该命令,你必须同时使用AuthName和Require命令,此外服务器还必须有一个“认证提供者”模块例如mod_authn_file和一个认证模块例如:mod_authz_user。
开启认证时如果想让某个目录内的一个目录不进行认证,就需要另外指定AuthType None来关闭认证,默认设置认证的目录下的目录会继承上级目录的设置。
-
指定密码文件
<Directory "/www/docs"> AuthType Basic AuthName Documents AuthBasicProvider file AuthUserFile "/usr/local/apache/passwd/passwords" Require valid-user </Directory>
-
无密码文件
<Directory "/www/docs/public"> AuthType None Require all granted </Directory>
Require
Require命令测试了一个认证用户是否是AuthUserFile所指定的认证文件内的用户!
- 所有用户无需认证:
Require all granted
- 所有用户认证无效:
Require all denied
- 只有在某个所给的环境变量被设置才允许访问:
Require env env-var
4 只有指定的HTTP方法才能访问:
Require method http-method [http-method]...
5 只有指定表达式计算为真时才能访问:
Require expr expression
6 只有指定用户才能访问:
1# Require user userid [userid]... 2Require user admin root
7 只有指定组内用户才能访问:
1# Require group group-name [group-name]... 2Require group admin
8 所有有效用户都能访问:
Require valid-user
9 指定ip网段才能访问:
1# 指定的10.172.20.0/24和192.168.2.0/24网段 2Require ip 10.172.20 192.168.2