Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
*任何人*是否有Windows SVNServe通过SASL/GSSAPI对AD/Kerberos进行身份验证?_Windows_Svn_Sasl_Gssapi_Svnserve - Fatal编程技术网

*任何人*是否有Windows SVNServe通过SASL/GSSAPI对AD/Kerberos进行身份验证?

*任何人*是否有Windows SVNServe通过SASL/GSSAPI对AD/Kerberos进行身份验证?,windows,svn,sasl,gssapi,svnserve,Windows,Svn,Sasl,Gssapi,Svnserve,场景:AD域中的Windows服务器承载Subversion存储库,该存储库仅使用SVN服务器(不使用Apache),而不使用VisualSVN 目标:通过GSSAPI通过SASL向Subversion存储库验证用户,并通过Kerberos向Windows域验证用户 在多个站点中频繁发帖表明,用户在这种配置中经常处于“无法获取SASL机制列表”的死胡同。我还没有看到任何实际运行这种机制的实例。有人在跑这个吗 我问这个问题是因为2011年在Gentoo论坛上发布了一篇帖子,其中有人在这个场景中查看

场景:AD域中的Windows服务器承载Subversion存储库,该存储库仅使用SVN服务器(不使用Apache),而不使用VisualSVN

目标:通过GSSAPI通过SASL向Subversion存储库验证用户,并通过Kerberos向Windows域验证用户

在多个站点中频繁发帖表明,用户在这种配置中经常处于“无法获取SASL机制列表”的死胡同。我还没有看到任何实际运行这种机制的实例。有人在跑这个吗

我问这个问题是因为2011年在Gentoo论坛上发布了一篇帖子,其中有人在这个场景中查看了相关的源tarball,并得出结论,虽然这种配置曾经可能有效,但源代码中不再有它所需的文件

现在,我并没有断言这种说法是准确的,但我知道我正处在同一个点上,我还没有看到任何帖子声称对这种设置“胜利”。如果有,请告知详情

非常感谢。

在为这个未回答的问题赢得了“风滚草”徽章之后,我自己进行了大量的额外研究,我得出结论,在Windows下,Subversion的主题组合实际上在当前的代码库下是不可能的。我相信SASL身份验证层中的某些东西是这里的问题,一些源被删除或显著更改为“中断”,我相信,在某一点上是有效的


我的解决方案是将Apache与mod_auth_sspi混合使用,虽然它确实降低了存储库的速度,但身份验证工作得非常好。这似乎是对身份验证要求的“修复”。

我已经使用SASL+LDAP对AD进行了身份验证,但没有使用SASL+GSSAPI,并且有一点需要注意:我必须在Windows中从Cygwin使用并运行svnserve

1) 在Linux中,通过SASL+LDAP/AD让svnserve对用户进行身份验证非常容易(我知道问题是关于Windows中的svnserve,但请耐心听我说)。针对LDAP/AD进行身份验证的重要部分是saslauthd,并使用testsaslauthd测试身份验证

以Ubuntu为例:

1a)/etc/sasl2/svn.conf

pwcheck_method: saslauthd
mech_list: PLAIN
这告诉subversion/svnserve使用saslauthd代表其进行身份验证

1b)/etc/saslauthd.conf

ldap_servers: ldap://yourADserver.dept.org
ldap_search_base: DC=dept,DC=org
ldap_bind_dn: cn=bindaccount,dc=dept,dc=org
ldap_bind_pw: passwordOfbindaccount

ldap_deref: never
ldap_restart: yes
ldap_scope: sub
ldap_use_sasl: no
ldap_start_tls: no
ldap_version: 3
ldap_auth_method: bind
ldap_filter: sAMAccountName=%u
ldap_password_attr: userPassword
ldap_timeout: 10
ldap_cache_ttl: 5
ldap_cache_mem: 32768
1c)通过testsaslauthd进行测试

testsaslauthd -u myusername -p mypassword
1d)如果成功,则运行saslauthd并启动SVN服务。并使用任何svn客户端来测试身份验证

2) 问题是,Cyrus的saslauthd到Windows没有本机端口,而且可能永远也不会有。答案是使用Cygwin,它有svnserve、testsaslauthd和saslauthd

只需重复上述步骤。。但是svn.conf的位置可能会有所不同。

我刚刚设法(经过近30个小时的挠头、编译和无源代码调试以获得正确的错误代码)让svnserve+SASL+GSSAPI工作!我的设置如下:

  • AD服务器是Debian 7.2(从源代码构建)上的Samba 4.1.0
  • Subversion服务器是Solaris Express(SunOS 5.11 snv_151a i86pc i386 i86pc)上的Subversion 1.8.5。使用本机(Sun)SASL从源代码为x64构建
  • 客户端是Windows 7 x64,具有OrtoiseSVN 1.8.2(x64二进制版本)和Heimdal 1.5.1(来自安全端点的x64二进制版本)
  • 与涉及Kerberos的任何内容一样,您需要使正向和反向DNS顺利工作,时钟同步,等等
在具有域凭据的Windows机箱上执行以下步骤:

  • 为Subversion服务器创建“svnserve”用户帐户(不是计算机帐户)
  • 运行“ktpass-princsvn/server.domain”。local@DOMAIN.LOCAL-mapuser DOMAIN.LOCAL\svnserve-crypto RC4-HMAC-NT-pass password-ptype KRB5\u NT\u PRINCIPAL-out svnserve.keytab”。您不想为此帐户启用DES,否则Windows 7将拒绝对其进行身份验证。我早些时候(按照食谱)打开了它,为了让它工作,我不得不再次关闭它
Subversion服务器的步骤:

  • 设置/etc/krb5/krb5.conf

    [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.
    
  • 设置repo/conf/svnserve.conf:

    [general]
    anon-access = none
    authz-db = authz
    realm = DOMAIN.LOCAL
    
    [sasl]
    use-sasl = true
    min-encryption = 0
    max-encryption = 256
    
  • 设置repo/conf/authz:

    [aliases]
    
    [groups]
    
    [/]
    * =
    # Still investigating whether access to the server can be controlled through an AD group.
    # Below is for user@DOMAIN.LOCAL, the realm appears to get lost.
    user = rw
    
  • setup/etc/sasl/svn.conf:

    mech_list: GSSAPI
    
  • 将svnserve.keytab放到/etc/krb5/krb5.keytab中(sasl配置中的keytab似乎没有任何作用)

  • 启动SVN服务
客户端的步骤:

  • 安装Ortoisesvn和Heimdal
  • 在Subversion服务器上编辑C:\ProgramData\Kerberos\krb5.conf,使其类似于/etc/krb5/krb5.conf。还有一些其他的默认设置,我没有考虑
  • 执行签出,无需密码

此设置的一个问题是svnserve进程必须能够读取/etc/krb5/krb5.keytab,因此需要对该进程的权限进行一点回溯。SVN服务将进入它自己的区域,所以这对我来说不是问题。我在测试时也遇到过mslsa_cc.dll崩溃的情况,但在我解决了所有问题后,我还没有看到任何崩溃

经过一些争论,您可能也能在Windows上的SVN服务上实现这一点。我在Windows客户端上尝试了MIT Kerberos,但每次启动时它都会崩溃,所以我放弃了它。你可能会有更好的运气

更新:解决了崩溃问题-这是mslsa_cc.dll中的一个bug(类似于,也有点错误,因为nOutStringLen需要除以2才能调用ANSIToUnicode)。mslsa_cc.dll上的二进制修补程序是:

  • 偏移量0xB46:从FF 15 04 69 00更改为D1 EE 0F 1F 40
  • 偏移量0xB5E:从77更改为EB

非常感谢您提供的详细信息,@jmsjr。奇妙的东西,令人欣慰的是知道至少有一些方法可以让这些都发挥作用。不幸的是,我最初的问题所针对的目标环境是我严重怀疑Cygwin wo的使用的环境