通过 Windows 域登录验证 SVN 用户

通过 Windows 域登录验证 SVN 用户

我刚刚为我所在大学的实验室设置了一个 SVN 服务器(在 Windows XP 计算机上)。现在,任何人都可以匿名访问和提交存储库。

我想仅允许 AD 域中的某些用户访问存储库。如果可能的话,我还希望密码与域的密码相同。

这可能吗?

解决了

我安装了 mod_auth_sspi 并使用以下内容配置了我的 httpd.conf:

DAV svn SVN路径“R:\SVN”

AuthName "SVN Server"
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIDomain AD
SSPIOfferBasic On
Require valid-user

AuthzSVNAccessFile "r:/svn/svnaccess.conf"

在svnaccess.conf中:

[groups]
dev = AD\user1, user1, AD\user2, user2

[/]
@dev = rw

答案1

如果您使用的是 Apache,那么答案是肯定的。请确保已安装 mod_auth_sspi。然后使用适当的设置配置目录:

<Directory />
    Options FollowSymLinks
    AllowOverride None

    AuthType SSPI
    AuthName "YOURDOMAIN"
    SSPIAuth On
    SSPIAuthoritative Off
    SSPIDomain dc.yourdomain.com
    SSPIOmitDomain Off
    SSPIOfferBasic On
    SSPIUsernameCase lower
    Require group "YOURDOMAIN\AuthorizedGroup" 
</Directory>

在您的 svnpasswd 文件中,您只需指定具有完整域名的用户

developers = mydomain\myuser
[/]
@developers = rw

我希望这能有所帮助。

答案2

您没有明确说明如何提供 Subversion,但根据您的标签,我假设是 Apache。使用 Apache 2.2 通过 AD 身份验证提供 Subversion 非常简单。

在您的 Apache 配置中,您需要将适当的 Auth 参数添加到存储库的位置块。

例如(限制读写访问):

<Location /repo>
    DAV svn
    SVNPath /var/svn/repo
    AuthName "Subversion WebDAV"
    AuthType Basic
    AuthLDAPURL "<ldap_url>"
    AuthLDAPBindDN "<ldap_bind_dn>"
    AuthLDAPBindPassword "<password>"
    Require valid-user
</Location>

您可能需要与 AD 管理员沟通,为 Apache 设置一个服务帐户以用于连接到 AD(如果您的 AD 要求您在执行搜索之前进行绑定)。

如果您希望允许匿名读取,同时要求用户进行身份验证才能写入,请将Require valid-user上面的行替换为以下内容:

<LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
</LimitExcept>

答案3

在 Windows 上托管 Subversion 存储库的另外两个选项是 SVNIsapi 和 Visual SVN。

SVNIsapi是 IIS 6.0 及以上版本的 IIS 插件。AD 安全性由 IIS 提供。

可视化 SVN捆绑了 apache、svn 和 GUI 工具来管理存储库。AD 安全性由 apache 模块提供,并通过 GUI 工具进行配置。

相关内容