如何让Subversion使用Linux系统帐户进行​​身份验证?

Ale*_*ias 11 svn webdav apache2

我已经使用Apache/WebDAV接口为Subversion设置了一个Ubuntu Server,以便与其他开发人员共享存储库.我的问题是,如何让Subversion使用linux系统帐户进行​​身份验证?这将导致Subversion帐户管理非常简单.Apache/WebDAV的Subversion目前正在使用此配置:

/etc/apache2/mods-available/dav_svn.conf的内容:

<Location /svn>
  DAV svn
  SVNParentPath /home/svn
  SVNListParentPath On
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
  Require valid-user
</Location>
Run Code Online (Sandbox Code Playgroud)

我试图改变AuthUserFile /etc/apache2/dav_svn.passwdAuthUserFile /etc/shadow没有成功.这使服务器响应错误500内部服务器错误.这是合乎逻辑的,为什么Web服务应该有权访问系统身份验证文件?

非常感谢提前!

Ale*_*ias 20

好!我做的!我觉得找到答案很难!

我们必须告诉Apache使用"外部身份验证提供程序",Apache不会检查身份验证,但会将任务委派给外部身份验证器,在这种情况下,是奇妙的pwauth.

所以我做的工作是:

  1. 为Apache2和pwauth安装Mod_Auth_External模块

    sudo apt-get install libapache2-mod-authnz-external pwauth
    
    Run Code Online (Sandbox Code Playgroud)
  2. 为Apache启用了新模块:sudo a2enmod authnz_external在终端中.

  3. 配置我apache.conf(或您可能有httpd.conf)添加外部身份验证器(基于本文):

    AddExternalAuth pwauth /usr/local/libexec/pwauth
    SetExternalAuthMethod pwauth pipe
    
    Run Code Online (Sandbox Code Playgroud)
  4. 编辑我/etc/apache2/mods-available/dav_svn.conf设置新的外部身份验证提供程序:

    ...
    AuthType Basic
    AuthName "Subversion Repository"
    AuthBasicProvider external
    AuthExternal pwauth
    Require valid-user
    ...
    
    Run Code Online (Sandbox Code Playgroud)
  5. 经过测试和工作正常!