使用 CNAME DNS 记录时出现 Kerberos 错误 APP_MODIFIED

使用 CNAME DNS 记录时出现 Kerberos 错误 APP_MODIFIED

我有一台运行 SQL Server 的生产服务器,我将其称为CONTOSO\MachineA。我有一台运行 IIS 的开发服务器,我将其称为CONTOSO\MachineB。两台服务器都运行 Windows Server 2008。我有一个域用户,我将其称为CONTOSO\MyAppSvc。我有两个 CNAME 记录,myapp => MachineAmyappdev => MachineB

我的目标是让(内部网)客户端连接到 IISMachineB并通过 Windows 身份验证进行身份验证,然后让应用程序模拟它们并MachineA以自己的身份连接到 SQL。

SELECT * FROM [MachineA].[My App DB].App.SomeTableMachineB 正在运行 SQL Server 的另一个实例,用于测试,并且我已通过运行验证 SQL 已正确设置双跳身份验证SSMS (on MyWorkstation) => SQL Server (on MachineB) => SQL Server (on Machine A)

MyApp在 IIS 上,MachineB设置了模拟和 Windows 身份验证(仅协商),并且正在MyAppPool运行,其中以 的身份运行MyAppSvcsystem.webServer/ security/ authentication/ windowsAuthentication @useAppPoolCredentials为真,@useKernelMode为假。MachineBMyAppSvc都受信任,可以进行无约束委派。上有两个 SPN MyAppSvcHTTP/myappHTTP/myapp.contoso.local

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

  • 我的工作站 => 机器 B
    • 获取/aPage
    • 主机:myapp
  • 机器B => 我的工作站
    • 401 未授权
    • WWW-身份验证:协商
  • 我的工作站 => 机器 B
    • 获取/aPage
    • 主机:myapp
    • 授權: 票证:
      • 领域:CONTOSO.LOCAL
      • sname:HTTP/MachineB.Contoso.local
  • 机器B => 我的工作站
    • 401 未授权
    • WWW 认证:
      • 错误代码:ERR-MODIFIED
      • 领域:CONTOSO.LOCAL
      • 名称:MyAppSvc

答案1

问题在于 DNS 条目是 CNAME 记录而不是 A 记录,而且 SPN 是针对主机名MyApp而不是机器名设置的MachineB。解决方案是将 DNS 条目更改为MyApp直接指向 IP 地址的 A 记录,MachineB或者添加 SPNHTTP/MachineBHTTP/MachineB.Contoso.local(旧的 SPN 和可能会被删除)。

相关内容