apache访问权限与验证

来源:互联网 发布:云计算四种部署模式 编辑:程序博客网 时间:2024/06/05 15:11

访问验证方式

    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才可访问资源



Authentication Provider Aliases

以下是一个简单的目录上下文配置

<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也不会加载使用其中的用户!










0 0
原创粉丝点击