2012-03-14 32 views

回答

0

您需要配置Apache以使用LDAP/AD进行身份验证,并且您必须配置path-base-authorization within SVN Repository以定义存储库的permissions within

+0

我使用mod_auth_sspi提供基于AD的身份验证,但据我所知,它不支持指定的访问通过AuthzSVNAccessFile中的域组,尽管如果有人知道不同,我很乐意听到它。 – Neutrino 2012-03-14 15:31:36

1

经过一番研究,我想我已经使用mod_sspi和一系列Apache位置配置指令来解决这个问题。

<Location /svn> 
    DAV svn 
    SVNParentPath "D:/SvnRepos" 
    SVNListParentPath On 

    AuthType SSPI 
    AuthName "SVN Server" 
    SSPIAuth On 
    SSPIAuthoritative On 
    SSPIDomain MYDOMAIN 
    SSPIOfferBasic On 
    Require group MYDOMAIN\PRODUCT1_DEVS MYDOMAIN\PRODUCT2_DEVS 
</Location> 


<Location /svn/Repo/Product1> 
    AuthType SSPI 
    AuthName "SVN Product1" 
    SSPIAuth On 
    SSPIAuthoritative On 
    SSPIDomain MYDOMAIN 
    SSPIOfferBasic On 
    Require group MYDOMAIN\PRODUCT1_DEVS 
</Location> 


<Location /svn/Repo/Product2> 
    AuthType SSPI 
    AuthName "SVN Product2" 
    SSPIAuth On 
    SSPIAuthoritative On 
    SSPIDomain MYDOMAIN 
    SSPIOfferBasic On 
    Require group MYDOMAIN\PRODUCT2_DEVS 
</Location> 

这种方法的缺点是配置明智,它有点冗长,它不适用于WebSVN。第一个我不在乎,第二个我可能会在稍后修复。

尽管你对Apache和SVN的所有专家都有疑问。这种配置是否安全可靠?这似乎对我很好,但我没有看到其他任何地方提到过这种方法,所以我在没有专家反馈的情况下部署它有点紧张,而且我们没有经验丰富的Apache家伙。

===编辑===

最终我决定设立,需要使用类似于此配置特定的访问权限每个项目一个单独的存储库。

# Publishes repository 1 at url http://localhost/svn/Repo1 used mostly by team 1. 
<Location /svn/Repo1> 
    # DAV config. 
    DAV svn 

    # Config to publish single repository. 
    SVNPath "D:/SvnRepos/Repo1" 

    # Config to publish all repositories in directory. 
    #SVNParentPath "D:/SvnRepos/" 
    #SVNListParentPath On 

    # Auth config. 
    AuthName "SVN" 
    AuthType SSPI 
    SSPIAuth On 
    SSPIOfferBasic On 
    SSPIAuthoritative On 

    <RequireAny> 
     # Allows access to any user. 
     #Require valid-sspi-user 

     # Allows access to users belonging to specified domain group(s). 
     Require sspi-group DOMAIN_NAME\TEAM1 

     # Allows access to specified domain users. 
     Require sspi-user DOMAIN_NAME\user1 
    </RequireAny> 

</Location> 

# Publishes repository 2 at url http://localhost/svn/Repo2 used by several teams. 
<Location /svn/Repo2> 
    # DAV config. 
    DAV svn 

    # Config to publish single repository. 
    SVNPath "D:/SvnRepos/Repo2" 

    AuthName "SVN" 
    AuthType SSPI 
    SSPIDomain DOMAIN_NAME 
    SSPIAuth On 
    SSPIOfferBasic On 
    SSPIAuthoritative On 

    Require sspi-group DOMAIN_NAME\TEAM1 DOMAIN_NAME\TEAM2 DOMAIN_NAME\TEAM3 
</Location> 

我不知道,虽然我原来的配置是否有可能合作,如果我有只是删除了第一的位置元素使访问根/ SVN目录,我敢肯定,我一定是测试的,但不现在有时间来验证这一点。