Apache2.4 authz_core_module模块使用

8/31/2015来源:PHP技巧人气:1531

Apache2.4 authz_core_module模块使用
Description:Core Authorization
Status:Base
Moduledentifier:authz_core_module
Sourceile:mod_authz_core.c
Compatibility:Available in Apache HTTPD 2.3 and later

这个模块提供了核心授权功能,通过身份验证的用户可以允许或拒绝访问部分网站。mod_authz_core各种授权提供程序提供了注册的功能。它通常是 与

身份验证提供者模块一起使用,如mod_authn_file mod_authz_user等和授权模块。它还允许高级逻辑应用于授权处理。

Example

下面的示例创建两个不同的ldap授权供应商基于ldap-group授权提供者的别名。这个示例允许一个授权的位置检查主机内部多个ldap组成员:

<AuthzPRoviderAlias ldap-group ldap-group-alias1 cn=my-group,o=ctx>    AuthLDAPBindDN cn=youruser,o=ctx    AuthLDAPBindPassWord yourpassword    AuthLDAPURL ldap://ldap.host/o=ctx</AuthzProviderAlias><AuthzProviderAlias ldap-group ldap-group-alias2 cn=my-other-group,o=dev>    AuthLDAPBindDN cn=yourotheruser,o=dev    AuthLDAPBindPassword yourotherpassword    AuthLDAPURL ldap://other.ldap.host/o=dev?cn</AuthzProviderAlias>Alias /secure /webpages/secure<Directory /webpages/secure>    Require all granted        AuthBasicProvider file        AuthType Basic    AuthName LDAP_Protected_Place        #implied OR Operation    Require ldap-group-alias1    Require ldap-group-alias2</Directory>
Authorization Containers

授权容器指令< RequireAll >、< RequireAny >和< RequireNone >可以相互结合,需要指令来表达复杂的授权逻辑。

下面的例子表达以下授权逻辑。为了访问资源,用户必须是superadmin用户,或者是管理组和管理员LDAP组和属于销售组或LDAP属性销售部门。此外,为了访问资源,用户必须不属于临时工组或LDAP组临时员工。

<Directory /www/mydocs>    <RequireAll>        <RequireAny>            Require user superadmin            <RequireAll>                Require group admins                Require ldap-group cn=Administrators,o=Airius                <RequireAny>                    Require group sales                    Require ldap-attribute dept="sales"                </RequireAny>            </RequireAll>        </RequireAny>        <RequireNone>            Require group temps            Require ldap-group cn=Temporary Employees,o=Airius        </RequireNone>    </RequireAll></Directory>

mod_authz_core提供了一些通用的授权提供程序可用于的指令。

Require env

env提供者允许访问控制服务器基于一个环境变量的存在。当需要指定env这个env-variable时候,然后请求被允许访问环境变量是否env-variable存在。服务器能够以灵活的方式设置环境变量基于客户机请求的特性使用 mod_setenvif提供的指令。因此,该指令可用于允许访问基于等因素客户用户代理(浏览器类型),推荐人或其他HTTP请求头字段。

SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in<Directory /docroot>    Require env let_me_in</Directory>

在这种情况下,浏览器的用户代理字符串,KnockKnock / 2.0将被允许访问,和其他所有人将被拒绝。

当 服务器查找路径通过寻找等内部subrequest DirectoryIndex mod_autoindex或生成一个目录清单,每请求subrequest环境变量并不是遗传的。此外,SetEnvIf指令不单独评估 subrequest由于API阶段mod_setenvif所使用。

原文:http://httpd.apache.org/docs/2.4/mod/mod_authz_core.html