我正在尝试在 VisualSVN 安装之上安装 WebSVN。VisualSVN 设置为使用 Windows 身份验证,来自域 CLIENT 和 DEV 的用户可以访问站点的不同区域。CLIENT 中的用户被拒绝 root 访问权限(通过 SVN 界面),并被授予对存储库中特定路径的访问权限。DEV 中的用户可以访问所有内容。当通过其 Web 界面或 TortoiseSVN 存储库浏览器访问 VisualSVN 时,此方法可正常工作。
我能够运行 WebSVN,并且它会在授予访问权限之前验证是否提供了有效的域用户凭据(来自任一域)。但是,一旦提供了有效的凭据,它就会向所有用户授予对所有内容的访问权限。
我尝试了VisualSVN/conf/httpd-custom.conf
文件中不同的设置变体,但都无法解决这个问题。理想情况下,WebSVN 会提供与 VisualSVN 相同的访问权限。但是,我可以完全阻止所有 CLIENT 域用户访问 WebSVN。
conf文件的当前状态是:
LoadModule php5_module "c:/php/php5apache2_2.dll"
LoadModule authz_user_module bin/mod_authz_user.so
LoadModule sspi_auth_module bin/mod_auth_sspi.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
PHPIniDir "C:/php"
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
<Location /websvn/>
SVNListParentPath on
SVNParentPath "D:/Repositories/"
AuthName "SVN Server"
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIDomain DEV
require valid-user
</Location>
(此设置旨在仅允许访问 DEV 域的成员,隐式排除 CLIENT 域 - 但是,任何一种方法的解决方案都将受到欢迎和接受)。
答案1
以下是我最终将用户限制为特定域中用户的方法:
<Location /websvn/>
AuthName "SVN Server"
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIDomain DEV
SSPIOfferBasic On
SSPIOmitDomain On
require group DEV\Group1
require group DEV\Group2
</Location>
关键是使用该require group
行来说明域中的哪些特定组应该能够获得访问权限。require valid-user
我之前尝试的该行只是验证它是否是有效用户,但没有检查用户的域。