用户认证模块所用相关命令知识扩展
要使用用户认证功能,你需要确保mod_authn_core
或mod_authz_core
模块在器在安装时就编译进了服务器内或者在apache主配置文件内加载上述2模块之一。
[root@localhost ~]# grep "mod_authn_core" /usr/local/apache/conf/httpd.conf
LoadModule authn_core_module modules/mod_authn_core.so
[root@localhost ~]# grep "mod_authz_core" /usr/local/apache/conf/httpd.conf
LoadModule authz_core_module modules/mod_authz_core.so
用户认证代码块举例
<Directory "/www/docs">
AuthType Basic
AuthName Documents
AuthUserFile "/usr/local/apache/passwd/passwords"
Require valid-user
</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 "/www/docs/public"> AuthType None Require all granted
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 只有指定用户才能访问:
# Require user userid [userid]...
Require user admin root
7 只有指定组内用户才能访问:
# Require group group-name [group-name]...
Require group admin
8 所有有效用户都能访问:
Require valid-user
9 指定ip网段才能访问:
# 指定的10.172.20.0/24和192.168.2.0/24网段
Require ip 10.172.20 192.168.2