当使用CNAME DNSlogging时,Kerberos错误APP_MODIFIED

我有一个生产服务器,我打电话给CONTOSO\MachineA ,运行SQL Server。 我有一个开发服务器,我打电话给CONTOSO\MachineB ,运行IIS。 这两个服务器都运行Windows Server 2008.我有一个域用户,我将打电话给CONTOSO\MyAppSvc 。 我有两个CNAMElogging, myapp => MachineAmyappdev => MachineB

我的目标是让(intranet)客户端连接到MachineB上的IIS并通过Windows身份validation进行身份validation,然后让应用程序模拟它们并以MachineA身份连接到SQL。

MachineB正在运行SQL Server的另一个实例进行testing,并且通过运行SELECT * FROM [MachineA].[My App DB].App.SomeTablevalidationSQL是否设置了正确的双跳validationSELECT * FROM [MachineA].[My App DB].App.SomeTable via SSMS (on MyWorkstation) => SQL Server (on MachineB) => SQL Server (on Machine A)

MyApp上IIS上的MyApp使用模拟和Windows身份validation(仅协商)进行设置,并在运行MyAppPool中运行。 system.webServer/ security/ authentication/ windowsAuthentication @useAppPoolCredentials为true, @useKernelMode为false。 MyAppSvcMyAppSvc都被委托给无约束的委托。 MyAppSvc上有两个SPN: HTTP/myappHTTP/myapp.contoso.local

使用wireshark时,当我尝试浏览http://myapp/aPage时,看到以下http://myapp/aPage

  • MyWorkstation => MachineB
    • GET / aPage
    • 主持人:myapp
  • MachineB => MyWorkstation
    • 401未经授权
    • WWW-Authenticate:协商
  • MyWorkstation => MachineB
    • GET / aPage
    • 主持人:myapp
    • 授权:票:
      • 领域:CONTOSO.LOCAL
      • sname:HTTP / MachineB.Contoso.local
  • MachineB => MyWorkstation
    • 401未经授权
    • WWW身份validation:
      • 错误代码:ERR-MODIFIED
      • 领域:CONTOSO.LOCAL
      • sname:MyAppSvc

问题在于DNS条目是CNAMElogging而不是Alogging,而事实上SPN是为主机名称MyApp而不是机器名称MachineB 。 解决方法是将MyApp的DNS条目更改为直接指向MachineB IP地址的Alogging,或者添加SPN HTTP/MachineBHTTP/MachineB.Contoso.local (旧的可能会被删除)。