mod_auth_ldap和mod_authnz_ldap之间的区别

Dav*_* W. 17 svn ldap apache2

我们使用LDAP来使用Apache httpd进行Subversion访问.我们最初使用以下所有用户都可以访问所有Subversion存储库:

<Location /src>
    DAV svn
    SVNParentPath /opt/svn_repos
    AuthType basic
    AuthName "SVN Repository"
    AuthBasicProvider ldap
    AuthzLDAPAuthoritative off
    AuthLDAPURL "ldap://ldap.mycorp.com:3268/dc=mycorp,dc=com?sAMAccountName" NONE
    AuthLDAPBindDN "CN=svn_acct,OU=Users,DC=mycorp,DC=com"
    AuthLDAPBindPassword "swordfish"
    Require valid-user
</Location>
Run Code Online (Sandbox Code Playgroud)

一切都很好.我被要求将CM存储库移动到其他位置,并使其仅供CM组中的人员访问.我做了以下事情:

<Location /cm>
    DAV svn
    SVNPath /opt/cm_svn_repos
    AuthType basic
    AuthName "CM Repository"
    AuthBasicProvider ldap
    AuthzLDAPAuthoritative off
    AuthLDAPURL "ldap://ldap.mycorp.com:3268/dc=mycorp,dc=com?sAMAccountName" NONE
    AuthLDAPBindDN "CN=svn_acct,OU=Users,DC=mycorp,DC=com"
    AuthLDAPBindPassword "swordfish"
    Require group CN=cm-group,OU=Groups,DC=mycorp,DC=com
</Location>
Run Code Online (Sandbox Code Playgroud)

我花了几个小时才意识到我在使用mod_auth nz _ldap而不是普通的'mod_auth_ldap'.因此,我需要ldap-group而不是group在我的Require陈述中.那很有效.

我的同事告诉我,有一个原因我们使用mod_auth nz _ldap而不是mod_auth_ldap,但他不记得为什么.我们查找了Apache httpd文档,但是文档没有提供任何线索,为什么你要使用另一个.

那么,mod_auth_ldap和mod_auth nz _ldap 之间的区别是什么,为什么你要使用另一个呢?

Dav*_* W. 26

遇到这个问题的其他人.它与更新版本的Apache httpd有关.我的困惑源于httpd的版本2.1和2.2之间的变化.因为我有Apache 2.2,所以我想使用新的框架:

  • mod_auth_ldap 适用于2.2之前的Apache版本
  • mod_authnz_ldap 适用于Apache 2.2及更高版本.

来自Apache 2.2手册

模块增强

Authn/AuthZ的

aaa目录中的模块已重命名,可为摘要式身份验证提供更好的支持.例如,mod_auth现在分为mod_auth_basicmod_authn_file; mod_auth_dbm现在被称为mod_authn_dbm; mod_access已重命名mod_authz_host.还有一个新的mod_authn_alias(已从2.3/2.4中删除)模块,用于简化某些身份验证配置.

mod_authnz_ldap模块

该模块是2.2 mod_auth_ldap模块到2.2 Authn/Authz框架的端口.新功能包括在Require指令中使用LDAP属性值和复杂的搜索过滤器.

模块开发者更改

Authn/AuthZ的

捆绑的身份验证和授权模块已按以下行重命名:

  • mod_auth_* - >实现HTTP身份验证机制的模块
  • mod_authn_* - >提供后端身份验证提供程序的模块
  • mod_authz_* - >实现授权(或访问)的模块
  • mod_authnz_* - >实现身份验证和授权的模块