我们使用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>
一切都很好。我被要求将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>
我花了几个小时才知道我在使用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之间的区别是什么,为什么要使用另一个呢?
答案 0 :(得分:26)
遇到此问题的其他任何人。它与更新版本的Apache httpd有关。我的困惑源于httpd的版本2.1和2.2之间的变化。因为我有Apache 2.2,所以我想使用新的框架:
mod_auth_ldap
适用于2.2之前的Apache版本mod_authnz_ldap
适用于Apache 2.2及更高版本。aaa目录中的模块已重命名,并为摘要式身份验证提供了更好的支持。例如,
mod_auth
现已分为mod_auth_basic
和mod_authn_file
;mod_auth_dbm
现在称为mod_authn_dbm
;mod_access
已重命名为mod_authz_host
。还有一个新的mod_authn_alias
(已从2.3 / 2.4中删除)模块,用于简化某些身份验证配置。
此模块是2.2 mod_auth_ldap模块到2.2 Authn / Authz框架的端口。新功能包括在Require指令中使用LDAP属性值和复杂的搜索过滤器。
捆绑的身份验证和授权模块已按以下行重命名:
mod_auth_*
- &gt;实现HTTP身份验证机制的模块mod_authn_*
- &gt;提供后端身份验证提供程序的模块mod_authz_*
- &gt;实施授权(或访问)的模块mod_authnz_*
- &gt;实现身份验证和模块的模块授权