我正在尝试在Mac OS 10.6.8服务器上实现SVN的基于路径的访问。如果我使用htpasswd跟踪帐户,一切正常。但我希望与Open Directory集成,以便团队成员可以轻松更改其密码。但是,mod_auth_apple似乎并没有将自己暴露为authn,因此authz_svn没有提取它可以使用它进行身份验证(我在apache日志中收到错误,说“没有配置Authn提供程序。”)。
我知道Open Directory可以通过ldap获得,但mod_authn_ldap没有随Mac OS X服务器上安装的Apache版本一起提供。如果authz_svn包含在股票发行中,我假设有一些方法可以让它工作(但我可能会给Apple太多信用)。有没有人在不使用自定义构建的Apache的情况下解决这个问题?
答案 0 :(得分:0)
经过几天的讨论后,发现了如何做到这一点。我添加了authn_file模块,然后还添加了AuthBasicAuthoritative。这似乎仍然强制使用mod_auth_apple进行身份验证,但在未指定AuthUserFile时不会失败。它还将身份验证信息传递给authz_svn,以便它可以正确检查访问控制。我希望对apache更熟悉的人可以正确解释为什么会这样。
所以我的位置指令现在看起来像
<Location "/">
Options All -Includes -ExecCGI -Indexes +MultiViews
<IfModule mod_dav.c>
DAV svn
SVNPath /Users/path/to/repo
</IfModule>
AllowOverride None
AuthName "Svn Repo"
AuthType Basic
AuthzSVNAccessFile /Users/path/to/access/file.txt
AuthBasicAuthoritative Off
Require valid-user
</Location>
令人讨厌的是,我必须将AuthBasicAuthoritative Off添加到我的服务器托管的任何其他站点。