带有VisualSVN Server的WebSVN,有人可以通过身份验证了吗?

时间:2020-03-05 18:41:02  来源:igfitidea点击:

我在Windows服务器上安装了VisualSVN服务器,并提供多个存储库。

由于VisualSVN服务器中内置的Web查看器是一种简约的Subversion浏览器,因此我想在我的存储库顶部安装WebSVN。

但是,问题在于我似乎无法使身份验证正常工作。理想情况下,我希望VisualSVN中指定的当前存储库身份验证可以与WebSVN一起使用,因此,尽管我看到了WebSVN中的所有存储库名称,但是如果没有正确的凭据,我实际上无法浏览到它们。

通过访问此Google查询上最顶部链接的缓存副本,我们可以看到到目前为止我发现的东西看起来很有希望。
(主要博客页面似乎已被破坏,我要指向的最顶层页面的域是the-wizzard.de)

在那里,我发现了一些我可以添加到WebSVN中的php文件之一的php函数。我在那里进行了修改,但是我成功完成的工作就是让WebSVN要求我输入用户名和密码,无论我输入什么内容,都不会让我进入。

不幸的是,php和apache在我看来主要是黑魔法。

那么,有没有人成功地将WebSVN与VisualSVN托管存储库集成在一起?

解决方案

回答

我正在使用VisualSVN Server,并且刚完成Trac的安装。我的目标是要获得一个更好的基于Web的存储库浏览器,而Trac绝对是我在Subversion上见过的更好的浏览器之一。转到http://www.visualsvn.com/server/trac/,安装过程非常简单。是的,Trac具有票证跟踪和Wiki系统,我们可能不需要这些系统,但是存储库和日志浏览器会为我出售。

现在,我发现可以通过简单地添加Trac来禁用Wiki和票证跟踪系统

[components]
trac.ticket.* = disabled
trac.wiki.* = disabled

到trac.ini配置文件的末尾。这会导致Wiki的起始页抛出一个错误,即找不到Wiki模块,因此我们必须在启动时通过再次编辑trac.ini来设置Trac以使用时间轴(日志视图)或者资源库浏览器打开在trac标题下:

默认的日志时间线

default_handler = TimelineModule

用于存储库浏览器(默认)

default_handler = BrowserModule

回答

我是我们提到的文章的作者。我发布的信息仅适用于在IIS上运行的WebSVN。据我了解,当我们在Apache上使用PHP时,该软件应该"正常运行",尽管我从未在该环境中进行过设置。我们是否尝试过进行一些" echo"调试(由于缺少更好的术语),以查看身份验证确切地失败了?

回答

我获得了与VisualSVN服务器一起使用的WebSVN身份验证,尽管我自己进行了许多黑客/试验错误定制。

这是我的操作方式:

  • 如果尚未安装PHP,请下载zip文件并按照在线php手动安装说明进行操作,以手动安装PHP。我将PHP安装到C:\ PHP
  • 将websvn文件夹解压缩到C:\ Program Files \ VisualSVN Server \ htdocs \
  • 完成配置websvn目录的步骤,即将configdist.php重命名为config等。我的存储库位于C:\ SVNRepositories,因此要配置身份验证文件,我将config.php行设置为:$ config-> useAuthenticationFile('C:/ SVNRepositories / authz'); //全局访问文件
  • 将以下内容添加到C:\ Program Files \ VisualSVN Server \ conf \ httpd-custom.conf中:
# For PHP 5 do something like this:
LoadModule php5_module "c:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php

# configure the path to php.ini
PHPIniDir "C:/php"

<IfModule dir_module>
   DirectoryIndex index.html index.php 
</IfModule>

<Location /websvn/>
   Options FollowSymLinks
   AuthType Basic
   AuthName "Subversion Repository"
   Require valid-user
   AuthUserFile "C:/SVNRepositories/htpasswd"
   AuthzSVNAccessFile "C:/SVNRepositories/authz"
   SVNListParentPath on
   SVNParentPath "C:/SVNRepositories/"
</Location>

这对我有用,并且websvn将仅显示为给定用户授权的那些目录。请注意,为了使其正常工作,我们必须向所有人提供"主级别"访问权限,然后为某些用户禁用对某些子目录的访问。例如,我有一个用户没有主级别访问权限,但确实具有对子级别的访问权限。不幸的是,即使该人直接链接到filedetails.php以获取他有权查看的文件,也无法在websvn中看到任何内容。就我而言,这并不重要,因为我无论如何都不希望他访问websvn,但这是我们要知道的。

另外,这会将服务器设置为ssl连接,因此,一旦设置好,地址将为和https://地址,而不是常规的http://。

回答

我将其与Windows身份验证一起使用(实际上是AuthType VisualSVN)技巧是注释掉svn auth并将其替换为在主配置文件中找到的相同种类的auth文本。感谢Anthony Johnson提出所有其他细节。

# For PHP 5 do something like this:
LoadModule php5_module "F:/wamp/bin/php/php5.3.0/php5apache2_2.dll"
AddType application/x-httpd-php .php

# configure the path to php.ini
PHPIniDir "f:/wamp/bin/php/php5.3.0/"

<IfModule dir_module>
   DirectoryIndex index.html index.php 
</IfModule>

#Alias /websvn/ "F:/Program Files/VisualSVN Server/htdocs/websvn-2.3.1/" 

<Location /websvn-2.3.1/>
   Options FollowSymLinks

    AuthName "Subversion Repositories"
    AuthType VisualSVN
    AuthzVisualSVNAccessFile "F:/Repositories/authz-windows"
    AuthnVisualSVNBasic on
    AuthnVisualSVNIntegrated off
    AuthnVisualSVNUPN Off
   Require valid-user

   SVNListParentPath on
   SVNParentPath "f:/Repositories/"
</Location>