无法为Reporting ServicesconfigurationKerberos

上下文

我正在尝试在域中configurationKerberos进行双跃点validation。 所以这里是机器和他们各自的angular色:

  • client01 :Windows 7作为客户端
  • dc01 :Windows Server 2008 R2作为域控制器和dns
  • server01 :Windows Server 2008 R2作为报告服务器( server01模式)
  • server02 :Windows Server 2008 R2作为SQL Server数据库引擎

我希望我的client01连接到server01并使用集成安全性configuration位于server02上的数据源。 所以,作为NTLM无法推送凭据,我需要设置Kerberos启用双跳authentication。 报告服务由networking服务服务帐户运行,并仅使用RSWindowsNegotiate选项进行configuration以进行身份​​validation。

问题

server02configuration数据源时,我无法将client01凭证传递给server01 。 所以我得到的错误:

 Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. 

所以我继续dc01并委托完全信任任何服务到server01但它没有解决问题。 我想要注意的是,我没有为server01configuration任何SPN,因为Reporting Service是由networking服务运行的,从我在Internet上阅读的内容来看,当Reporting Services与networking服务一起上线时,SPN会自动注册。 我的问题是,即使我想手动configurationSPN,我不知道我必须设置它们。 在dc01或在server01

所以我在这个问题上进一步讨论了这个问题。 从我对Kerberos的理解中,当我尝试连接数据源时,这是networking上应该发生的事情:

 client01 ---- AS_REQ ---> dc01 <--- AS_REP ---- client01 ---- TGS_REQ ---> dc01 <--- TGS_REP ---- client01 ---- AP_REQ ---> server01 <--- AP_REP ---- server01 ---- TGS_REQ ---> dc01 <--- TGS_REP ---- server01 ---- AP_REQ ---> server02 <--- AP_REP ---- 

因此,我使用Wireshark捕获了本地networking,但每当我尝试从client01上的server01configuration数据源以将凭据传递给server02 ,我的客户端都不会向TGS_REQ上的KDC发送AS_REQdc01

问题

那么是否有人可以告诉我是否应该configurationSPN以及在哪台机器上进行configuration?

此外,为什么client01从不向我的KDC请求TGT或TGS。 你认为dc01的DCangular色出了dc01吗?

应该在表示服务标识的计算机或用户对象上configurationSPN。 如果server01上的服务在networking服务下运行,那么您将确保在代表server01的计算机帐户上configuration了正确的SPN。 你可以通过运行"setspn -l server01 ”来检查它。 该命令本身可以从任何地方运行,因为它将与DC进行通信并检查该对象的serviceprincipalname LDAP属性。 所以你可以从dc01或server01或其他任何地方运行它,只要你有setspn.exe二进制文件。 你可以通过运行"setspn /?"来看到所有的语法。

如果他们没有configuration(通过上述命令validation),你可以使用相同的二进制文件添加它们,但语法不同。 “-A”开关的示例语法,通过运行“ setspn -A http/server01 server01".来添加值setspn -A http/server01 server01". 该示例假定服务运行的端口是80或443。

您必须小心确保SPN不会在AD林中的其他任何地方注册,因为SPN必须是唯一的。 当您执行"setspn -F -Q http/server01"类的任何操作时,“-Q”开关可以检查SPN的存在。

在Wireshark或任何其他networking跟踪工具中,只有当客户端没有资源的caching票据,并且没有负caching指示SPN不可用时,才会看到Kerberosstream量。 如果您尝试过几次,然后启动Wireshark以查看发生了什么事情,那么如果SPN完全丢失,则可能包含负面caching。 否则,如果您已经有caching的票证,这将被重新使用,不会要求进一步的票证。

在进行networking跟踪进行故障排除之前,始终在客户端“ ipconfig /flushdns ”和kerberoscaching“ klist purge ”上启用dnscaching。 这将显示KDC位置的名称parsingstream量,并尝试获取未本地caching的票证。

http://msdn.microsoft.com/en-us/library/cc281253.aspx在SSRS方面看起来是一个很好的资源&#x3002; 有关Kerberos帮助进行故障排除,请参阅以http://blogs.technet.com/b/askds/archive/2008/06/13/understanding-kerberos-double-hop.aspx开头的askds博客文章&#x3002; 然后查看http://blogs.technet.com/b/askds/archive/2008/05/29/kerberos-authentication-problems-service-principal-name-spn-issues-part-1.aspx和其他文章觉得合适&#x3002;

如果KDC服务正在运行,DC01将发出票据,并且可以在其数据库中find注册的相关SPn,并规定它不会在森林的其他地方复制。 该值必须是唯一的。 可以检查“ setspn -x -f ”以检查感兴趣的值是否在森林中是重复的。