2

我正在通过 SVNSERVE 设置基于 Windows 的 Subversion 设置,在该设置下,用户通过 SASL 和 GSSAPI 对 Active Directory 进行身份验证。我知道一些供应商提供预打包的 Subversion 安装,并提供开箱即用的集成 AD 支持,但在我的情况下,这些不是一个选项。

我在 Windows 上使用 Subversion 1.7.4,在 Windows 上使用 MIT Kerberos V5 (3.2.2),并将从 Win64 机器上的 Tortoise SVN 客户端访问存储库。SVNSERVE 在域帐户下作为系统服务运行。

对于我的存储库服务器,我相信我已经准备好所有基本部分(svn、Kerberos,SVNSERVE 推迟到 SASL 身份验证,然后配置为使用 GSSAPI 作为机制)。我现在到了尝试查询存储库会导致“无法协商身份验证机制”的地步,这是我目前所期望的,因为我还没有定义存储库主机查询 Kerberos 的 SPN。网络捕获告诉我 spn "svn/*FQDN_of_host_omitted* 不是公认的 SPN,这正是我在这一点上所期望的......

所以,虽然我知道我需要一个 SPN,但我需要一些指导来获得正确的SPN 集,因为我不能在这个测试环境中自己做(必须请求,所以我想确保我请求正确的组合)。我的信念是我需要下面列出的 SPN,但如果有人能证实我的方向正确,我将不胜感激。我很困惑是否需要 SPN 纯粹用于针对主机的 svn 服务,或通过指定帐户针对主机的 svn 服务,或两者兼而有之

所以,我相信我可能需要以下一项或全部。哪一个(如果有的话)是对的/错的?:

#1 SPN for svn service on non-FQDN of host machine:
setspn -F -A svn/*nonFQDN_of_host* *nonFQDN_of_host*

#2 SPN for svn service on FQDN of host machine:
setspn -F -A svn/*FQDN_of_host* *FQDN_of_host*

#3 SPN for svn service from non-FQDN of host through service account:
setspn -F -A svn/*nonFQDN_of_host* *domain\svnhostaccount*

#4 SPN for svn service from FQDN of host through service account:
setspn -F -A svn/*FQDN_of_host* *domain\svnhostacccount*

提前感谢您的帮助,希望这个问题表面上不会太愚蠢:)

4

1 回答 1

1

我正在翻阅旧问题,偶然发现了这个问题。因为我从 2016 年 10 月才成为会员,所以回答晚了。这个问题的答案如下。注意:使用setspn -S代替setspn -A,原因是“-S”开关会查找重复项,而较旧的“-A”开关不会。此外,在设置新的 SPN 时,通常首选将 SPN 绑定到服务帐户,而不是主机帐户,因为这样可以让您在希望通过负载平衡器发送流量时具有更大的灵活性;流量可以路由到预先确定的可用机器池中的任何主机。而绑定到主机的 SPN 只能在指定的主机上工作。话虽如此,当您提出问题时,您可能希望如下运行 setspn 命令:

#1 SPN 用于主机非 FQDN 上的 svn 服务:

setspn -F -S svn/*nonFQDN_of_host* *nonFQDN_of_host*

#2 SPN 用于主机 FQDN 上的 svn 服务:

setspn -F -S svn/*FQDN_of_host* *FQDN_of_host*

#3通过服务帐户从主机的非 FQDN 获取 svn 服务的 SPN:

setspn -F -S svn/*nonFQDN_of_host* *svnhostaccount*

#4通过服务帐户从主机的 FQDN 获取 svn 服务的 SPN:

setspn -F -S svn/*FQDN_of_host* *svnhostacccount*
于 2017-02-07T22:24:44.913 回答