我在Windows Server 2003上运行Apache / SVN,通过LDAP / Active Directory和平面文件进行身份验证。
除了任何 LDAP用户可以访问所有内容之外,它的工作正常。我希望能够按用户或组限制SVN存储库。
理想情况下,我会做到这样的事情:
<Location /svn/repo1>
# Restricted to ldap-user1, file-user1, or members of ldap-group1,
# all others denied
</Location>
<Location /svn/repo2>
# Restricted to ldap-user2, file-user2, or members of ldap-group2,
# all others denied
</Location>
真正的诀窍可能是我有混合身份验证:LDAP和文件:
<Location /svn>
DAV svn
SVNParentPath C:/svn_repository
AuthName "Subversion Repository"
AuthType Basic
AuthBasicProvider ldap file
AuthUserFile "svn-users.txt" #file-based, custom users
AuthzLDAPAuthoritative On
AuthLDAPBindDN ldapuseraccount@directory.com
AuthLDAPBindPassword ldappassword
AuthLDAPURL ldap://directory.com:389/cn=Users,dc=directory,dc=com?sAMAccountName?sub?(objectCategory=person)
Require valid-user
</Location>
在我的谷歌搜索中,我看到有些人通过像这样提取authz
文件来实现这一目标:
<Location /svn>
...
AuthzSVNAccessFile "conf/svn-authz.txt"
</Location
然后,我需要映射AD用户。这种方法的任何例子?
答案 0 :(得分:8)
这实际上比我想象的容易得多。我把它添加到我的位置:
<Location /svn>
...
AuthzSVNAccessFile "conf/svn-authz.txt"
</Location
在该文件中,我刚刚指定了正常的SVN权限(此时系统似乎没有区分文件用户和LDAP用户):
[groups]
@admin = haren
###
### Deny all but administrators to the tree
###
[/]
* =
@admin = rw
###
### Allow more specific people on a per-repository basis below
###
[repo1:/]
ldap-user1 = rw
file-user1 = rw
[repo2:/]
ldap-user2 = rw
file-user2 = rw
我仍在使用LDAP组语法来使该部分正常工作。任何建议都值得赞赏。
答案 1 :(得分:5)
感兴趣的其他人的另一种替代方法:
Require ldap-group cn=SVN Users,cn=Users,dc=company,dc=com
假设您在Active Directory中创建了一个名为SVN Users的组。请注意,该组周围没有双引号。
使用它代替Require valid-user
然后,您可能无需在任何更改时重新启动apache,只需将用户添加到AD中的组
答案 2 :(得分:0)
您应该 不 使用
Require valid-user
但请使用
Require group