访问验证方式
- Require all granted
允许所有请求访问资源
Require all denied
拒绝所有请求访问资源
Require env env-var [env-var] ...
当指定环境变量设置时允许访问
Require method http-method [http-method] ...
允许指定的http请求方法访问资源
Require expr expression
当expression返回true时允许访问资源
Require user userid [userid] ...
允许指定的用户id访问资源
Require group group-name [group-name] ...
允许指定的组内的用户访问资源
Require valid-user
所有有效的用户可访问资源
Require ip 10 172.20 192.168.2
允许指定IP的客户端可访问资源
Require not group select
select组内的用户不可访问资源
以下[]中的表示可选项,实际中不能包含[]及其内容
一、指定目录的AuthType
<Directory /root/apache2>
AuthType Basic [None | Basic | Digest | Form]
</Directory>
二、设置AuthName,该信息将在客户端提醒框上显示
<Directory /root/apache2>
AuthType Basic [None | Basic | Digest | Form]
AuthName "Entry username and password"
</Directory>
三、指定AuthUserFile,指定用户名和密码存放的文件,密码文件的创建参考附录一
<Directory /root/apache2>
AuthType Basic [None | Basic | Digest | Form,后三种为不同的加密方式]
AuthName 请输入用户名和密码
AuthUserFile /usr/file/password
</Directory>
四、设置验证方式
<Directory /root/apache2>
AuthType Basic [None | Basic | Digest | Form]
AuthName "Entry username and password"
AuthUserFile /usr/file/password
Require user rote [验证方式参考 http://roteg.iteye.com/blog/1465380]
</Directory>
附录一、创建用户信息文件
使用 htpasswd -c /root/apache2/auth/password rote 123
若AuthType使用的是digest,则是用htdigest创建密钥文件
创建文件passwd,并初始创建用户rote,密码123
验证、
客户端访问时会提示“Entry username and password”,输入rote/123才可访问资源
以下是一个简单的目录上下文配置
<Directory /root/apache2/doc>
AuthType Basic
AuthName Document
AuthUserFile /root/apache2/auth/passwd
Require user rote
</Directory>
上面是通过AuthUserType指定的用户信息文件,还可通过下面两种方式设置授权,效果同上
一、用户文件
<AuthnProviderAlias file pwdfile>
AuthUserFile /root/apache2/auth/passwd
</AuthnProviderAlias>
<Directory /root/apache2/doc>
AuthType Basic
AuthName Document
AuthBasicProvider pwdfile
Require user rote
</Directory>
二、LDAP
<AuthnProviderAlias ldap ldap1>
AuthLDAPBindDN cn=rote,o=ctx
AuthLDAPBindPassword 123
AuthLDAPURL ldap://ldap.host/o=ctx
</AuthProviderAlias>
<AuthnProviderAlias ldap ldap2>
AuthLDAPBindDN cn=rote,o=dev
AuthLDAPBindPassword 123
AuthLDAPURL ldap://other.ldap.host/o=dev?cn
</AuthProviderAlias>
<Directory /webpages/secure>
AuthBasicProvider ldap1 ldap2
AuthType Basic
AuthName LDAP
Require valid-user
</Directory>
使用auth_dbm
- 一、AuthDBMUserFile
<AuthnProviderAlias file ufile>
AuthUserFile /root/apache2/auth/userfile
</AuthnProviderAlias>
<Directory /root/apache2/htdoc>
AllowOverride None
AuthType Basic
AuthName "Entry username and password"
AuthBasicProvider ufile
Require valid-user
</Directory>
假如有成百上千个用户在userfile文件中,那么使用这种方式效率极低,应使用
AuthDBMUserFile,使用步骤如下
1.1 使用htdbm生成dbm文件
./htdbm -bc /root/apache2/auth/userdbm dbm1 dbm1
上述命令将生成userdbm.dir和userdbm.pag文件,并创建用户dbm1,密码dbm1
1.2 配置AuthDBMUserFile
<Directory /root/apache2/htdoc>
AllowOverride None
AuthType Basic
AuthName "Entry username and password"
AuthBasicProvider dbm
AuthDBMUserFile /root/apache2/auth/userdbm
</Directory>
按照上述配置后,访问资源需提供userdbm中存在的用户。
二、AuthDBMGroupFile
<Directory /root/apache2/htdoc>
AllowOverride None
AuthType Basic
AuthName "Entry username and password"
AuthBasicProvider dbm
AuthDBMUserFile /root/apache2/auth/userdbm
AuthGroupFile /root/apache2/auth/groupfile
Require group group1
</Directory>
上述指定只有组group1中的用户可访问资源,同样,如果groupfile中的数据很多,
效率也会很低,应使用AuthDBMGroupFile,使用如下
<Directory /root/apache2/htdoc>
AllowOverride None
AuthType Basic
AuthName "Entry username and password"
AuthBasicProvider dbm
AuthDBMUserFile /root/apache2/auth/userdbm
AuthDBMGroupFile /root/apache2/auth/groupfile
Require group group1
</Directory>
注:当使用AuthBasicProvider dbm时,原AuthUserFile即使指定了apache也不会加载使用其中的用户!