7

我正在尝试设置 SVN 以针对 ActiveDirectory 进行身份验证。我知道如果您将 SVN 设置为使用 Apache 提供服务,这是可能的,但这样做会引入太多开销,并且 SVN 运行速度太慢。通过阅读 SVN 文档,听起来现在应该可以(因为 SASL 在 1.5 中集成到 SVN 中)配置 SVN 以在不使用 Apache 的情况下针对 ActiveDirectory 进行身份验证。不幸的是,来自 SVN 和 SASL 的文档非常通用,并且缺乏帮助使其正常工作的细节。

有没有人得到这个工作?如果您可以提供一些示例配置文件或高级步骤来为我自己(可能还有其他人)指明正确的方向,那将是一个巨大的帮助。

4

4 回答 4

3

启用 SASL 的 SVN(在 Debian v7 机器上),使用 Active Directory(在另一台服务器上)

请注意,我已经设置了 samba 和 winbind,其中包括 libsasl2-2,因此还获得了启动可执行文件和 svnserve 和模块(需要 svn plain(或其他)机制工作,这(仅供参考)将它们放在 /usr/lib/ x86_64-linux-gnu/sasl2/libplain.so):

sudo apt-get install sasl2-bin svnserve libsasl2-modules

sudo pico /etc/default/saslauthd

更改START=noSTART=yes, 和MECHANISMS="pam", MECHANISMS="ldap"and THREADS=0(不是 5), 去掉最后一行/var前面的,控制 x, y, 输入/runOPTIONS="-c -m /run/saslauthd";

sudo pico /etc/saslauthd.conf

添加以下内容(注意:您可能需要在 dc= 系列前面添加一个“ou=folder”):

ldap_servers: ldap://hostname.of.server<br />
ldap_search_base: dc=hostname,dc=of,dc=server<br />
ldap_bind_dn: cn=usernamehere,dc=hostname,dc=of,dc=server<br />
ldap_bind_pw: password<br />
ldap_filter: samaccountname=%u<br />
sudo /etc/init.d/saslauthd start

运行sudo testsaslauthd -u usernamehere -p password以测试 ldap 设置并cat /var/log/auth.log查看日志。

将以下行添加到文件中/usr/lib/sasl2/svn.conf

pwcheck_method: saslauthd
mech_list: plain

创建存储库:

mkdir /data
svnadmin create /data/repohere

假设某种以前的“svnadmin dump /data/repohere >/data/repohere.dump” svnadmin load /data/repohere

pico /data/repohere/conf/svnserve.conf

取消注释(删除前导磅前导空格);并且,修改 anon-access 和 authz-db (请注意,我将 authz 放在 /data 中,而不是我的多个 repos 共享它):

anon-access = none<br />
auth-access = write<br />
authz-db = ../../authz<br />
use-sasl = true<br />
pico /data/authz

添加以下内容:

[groups]<br />
whatever = username1,username2<br />
[/]<br />
@whatever = rw<br /> 

在启动时安排 svnserve(抱歉,找不到,所以手动制作一个):

sudo cp /etc/init.d/skeleton /etc/init.d/svnserve
sudo chmod 755 /etc/init.d/svnserve
sudo update-rc.d svnserve defaults
sudo pico /etc/init.d/svnserve

将DESC更改为“subversion server”,将NAME更改为“svnserve”,将DAEMON的“sbin”中的“s”取出(使其只是/bin/),将DAEMON_ARGS更改为“-d -r /data--日志文件 /var/log.svn.log"

sudo /etc/init.d/svnserver start

测试你最喜欢的 svn 客户端(例如 TortoiseSVN)!

于 2014-10-10T14:42:51.727 回答
1

使用VisualSVN Server在 Windows 上运行 SVN

于 2009-11-26T13:56:05.783 回答
1

我在其中一个邮件列表中找到了这篇文章。下次我尝试让这个工作时,我将参考这些信息。我将在下面引用它以供参考。

在 Mark Phippard 的帮助下,我刚刚尝试让 svnserve + SASL 在 Windows 上运行,并且需要对 svn.serverconfig.svnserve.sasl 部分进行一些补充/更正。

  1. 您谈论的是 subversion.conf 文件,但至少在 Windows 上它被称为 svn.conf。

  2. 在 Windows 下,数据库文件的默认名称是 sasldb2,位于 C:\CMU。如果您没有在 svn.conf 中指定任何内容,SASL 在尝试对 Subversion 进行身份验证时将在此处查找它。

  3. 但是,您可以通过在 svn.conf 中添加另一行来指定要使用的 SASL 数据库文件,格式为: sasldb_path: c:\svn_repository\sasldb 即 c:\svn_repository 中名为 sasldb 的文件

  4. 可以更好地描述注册表项: SearchPath - 包含 sasl*.dll 插件的目录路径,例如 saslCRAMMD5.dll(我们在这里不是在谈论 libsasl.dll)。ConfFile - 包含 svn.conf 文件的目录路径。注意这里的不一致:这是包含 conf 文件的目录,而 conf 文件中的 sasldb_path 值指向数据库文件本身,而不是它的包含目录。

  5. 在 Windows 上使用 saslpasswd2 时,您需要显式指定数据库文件(不要认为它会默认使用 c:\CMU\sasldb2),因此更好的命令行示例是:

saslpasswd2 -c -fc:\svn_repository\sasldb -u 领域用户名

  1. Windows 用户(通常)不构建他们自己的程序——他们有仆人/开发人员为他们做这件事;-) 那么他们从哪里获得 saslpasswd2 呢?Open Collab Net 有一个方便的 svn 服务器安装程序,其中包括这些程序,甚至将 svnserve 安装为服务。可能值得一提。不确定您将提供什么链接,因为它目前仅存在于合并跟踪/Beta 站点上。

西蒙

于 2011-08-13T04:38:50.643 回答
0

我认为这在技术上是可行的。另请参阅链接点 8.GSSAPI 和microsoft technet 文章

我有使用 SVN 1.6 + SASL 的实践经验,如此所述。这对我们来说很好。所以我认为你最大的挑战是“结合” SASL 和 Active Directory。

于 2009-11-25T07:48:41.667 回答