场景:AD域中的Windows服务器仅使用SVNSERVE(而不使用Apache)而不使用VisualSVN托管Subversion存储库。
目标:通过GSSAPI通过SASL通过Kerberos验证用户对Subversion存储库的身份,并在Windows域中进行身份验证。
在多个站点上的频繁发布表明用户在此配置中经常死于“无法获取SASL机制列表”。我还没有看到任何实际正在运行的实例。有人在运行吗?
我问这个问题是由于2011年在Gentoo论坛上发布的,一个人正是在这种情况下审查了相关的源tarball,并得出结论,尽管一次这样的配置可能有效,但不再需要它的文件了在源中。
GEntoo forum discussion where poster claims svnserve+gssapi+sasl worked at one time, but no longer does.
现在,我没有断言该说法是准确的,但是我确实知道我被困在同一点,而且我还没有看到任何这样的设置声称“胜利”的帖子。如果有的话,请告知详细信息!
提前谢谢了。
最佳答案
我已经进行了管理(经过将近30个小时的头部爬取,编译和无源代码调试,以获得了不错的错误代码),才能使svnserve + SASL + GSSAPI正常工作!我的设置如下:
在具有域凭据的Windows框中执行的步骤:
Subversion服务器的步骤:
[libdefaults]
default_realm = DOMAIN.LOCAL
[realms]
DOMAIN.LOCAL = {
kdc = pdc.domain.local
admin_server = pdc.domain.local
}
[domain_realm]
.domain.local = DOMAIN.LOCAL
domain.local = DOMAIN.LOCAL
# Other defaults left as-is.
[general]
anon-access = none
authz-db = authz
realm = DOMAIN.LOCAL
[sasl]
use-sasl = true
min-encryption = 0
max-encryption = 256
[aliases]
[groups]
[/]
* =
# Still investigating whether access to the server can be controlled through an AD group.
# Below is for [email protected], the realm appears to get lost.
user = rw
mech_list: GSSAPI
针对客户的步骤:
此设置的一个问题是svnserve进程必须能够读取/etc/krb5/krb5.keytab,因此需要稍微减少对此的权限。尽管svnserve进入了自己的区域,所以这对我来说不是问题。在测试过程中,我还遇到了mslsa_cc.dll崩溃的情况,但是,当一切都整理好之后,我再也没有看到任何崩溃的情况。
进行一些争执后,您也许也可以在Windows上将其用于svnserve。我在Windows客户端上尝试了MIT Kerberos,但是每次启动时它都崩溃了,所以我放弃了。您可能会有更好的运气。
更新:解决了崩溃问题-这是mslsa_cc.dll中的错误(类似于https://github.com/krb5/krb5/commit/7acb524f5aa00274771dbbfac19d2dd779aad409,这也使它略有错误,因为调用ANSIToUnicode的方式需要将nOutStringLen除以2)。 mslsa_cc.dll上的二进制修补程序是: