我正在通过SVNSERVE设置基于Windows的Subversion设置,在该设置下,用户可以通过SASL和GSSAPI向Active Directory进行身份验证。我知道有些提供程序提供了集成了AD支持的Subversion预打包安装,但是在我的情况下,这不是一个选择。

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

对于我的存储库服务器,我相信我已经准备好所有基本组件(svn,Kerberos,SVNSERVE遵循SASL身份验证,然后将其配置为使用GSSAPI进行该机制)。现在到了要查询存储库的尝试导致“无法协商身份验证机制”的地步,这是我目前的期望,因为我没有为存储库主机定义SPN来查询Kerberos。 Network Capture告诉我spn“svn/* FQDN_of_host_omitted *”不是公认的SPN,这正是我现在所期望的...

因此,尽管我知道我需要一个SPN,但是我需要一些指导来获取正确的SPN集,因为我不能在此测试环境中自己进行操作(必须要求,因此我想确保我请求正确的组合)。我的信念是我需要下面列出的SPN,但是如果有人可以验证我的方向正确,我将不胜感激。我对于仅针对主机的svn服务,还是通过指定帐户针对主机的svn服务仅需要SPN感到困惑。

因此,我相信我可能需要以下一项或全部。哪个是对的还是错的:

#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*

预先感谢您的帮助,希望这个问题看起来不是很愚蠢:)

最佳答案

我翻阅旧问题,偶然发现了这个问题。由于我自2016年10月以来才成为成员,所以回答得很晚。对此的答案如下。注意:使用setspn -S而不是setspn -A,原因是“-S”开关查找重复项,而较旧的“-A”开关则不查找重复项。另外,在设置新的SPN时,通常最好将SPN绑定(bind)到服务帐户,而不是主机帐户,因为这样可以在您希望通过负载平衡器发送流量时提供更大的灵活性。流量可以路由到预定的可用计算机池中的任何主机。绑定(bind)到主机的SPN仅在指定的主机上工作。话虽如此,当您问问题时,您本想按以下方式运行setpn命令:

#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 SPN,用于通过服务帐户从主机的非FQDN发送svn服务:
setspn -F -S svn/*nonFQDN_of_host* *svnhostaccount*

#4 SPN,用于通过服务帐户从主机的FQDN进行svn服务:
setspn -F -S svn/*FQDN_of_host* *svnhostacccount*

10-04 13:19