我正在一个项目中,我有一个ApacheDS包含所有用户和他们的组成员资格。 组成员身份都存储为每个组的成员属性,我做了一个架构修改,所以我也有每个用户的memberOf属性,使得在做授权时检查组成员资格是微不足道的。 我需要让用户根据他们的组成员身份访问Subversion版本库,并立即启动并运行。
然而,我的客户刚告诉我,他在指定要求时忘了提到一个“轻微”的细节。 他们显然也有一些存储库,他们需要对某些子文件夹有更严格的要求。 所以想出一个简单的解决scheme,我想我可以简单地结合我的LDAP要求指令与AuthzSVNAccessFile指令。
这是我的configuration:
<Location /TestClosedProject> SVNPath /repos/TestClosedProject SVNListParentPath on # Include shared LDAP settings, binddn, passwords, ldapurl etc. Include /svn/conf/ldapCommonSettings # LDAP Authentication & Authorization is final; do not check other databases AuthzLDAPAuthoritative on AuthName "TestClosedProject" # Admin group has full access Require ldap-attribute memberOf=cn=TestProject-admins,ou=groups,dc=somedomain,dc=somecountry # Members group has read-only access <Limit GET PROPFIND OPTIONS REPORT> Require ldap-attribute memberOf=cn=TestProject-members,ou=groups,dc=somedomain,dc=somecountry </Limit> </Location>
这允许TestProject成员中的任何人阅读/ TestProject中的代码,并且Test-admins具有完全访问权限。
但是,当我在上面的configuration中插入AuthzSVNAccessFile /svn/conf/TestClosedProject.svnAuth时,我们可以在svnAuth文件中重写需要ldap-attribute指令,方法是指定在LDAP中存在的用户,但不是-admins也不是成员组。 /svn/conf/TestClosedProject.svnAuth的内容:
[groups] supporters = jrf,agata admins = fj,jrf members = fj,jrf [/] * = @members = r @admins = rw [TestClosedProject:/support] @supporters = rw @members = r
有问题的情况是
有什么办法可以设置这个,以便只有成员或pipe理员LDAP组中的用户可以使用svnAuth文件进行访问? 基本上我只是想拒绝任何人在这两个组中的任何一个访问到svnAuth文件之前 – 这是可能的 – 如果是这样,我该如何指定?
以下是我如何pipe理存储库访问:
我不在Apacheconfiguration中做任何事情“需要有效的用户”(这种方式Apache只需要重新启动时添加新的存储库)。
通过这种方式,我可以将存储库权限的所有维护卸载到存储库的所有者。 这可能不会直接解决您的问题,因为它不包含任何LDAP组,但是这个解决scheme在数百个存储库中为我工作了好几年。
不知道这是纯粹的开源,但我知道WANdisco的商业产品,Subversion访问控制可以处理这个。 该产品不是authz文件,而是拥有自己的适用于用户的组和规则列表。 来自组的成员来自轮询活动目录服务器,所以这应该满足要求。