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

转载请注明文章出处:http://www.cnblogs.com/gredswsh   Gredswsh  专栏

posted @ 2014-07-30 12:42  fxcl  阅读(1853)  评论(0编辑  收藏  举报