我有一个生产服务器,我称之为CONTOSO\MachineA,运行server。我有一个开发服务器,我称之为CONTOSO\MachineB,运行IIS。两台服务器都在运行Windows 2008。我有一个域用户,我称之为CONTOSO\MyAppSvc。我有两份CNAME记录,myapp => MachineA和myappdev => MachineB。
我的目标是让(intranet)客户端在MachineB上连接到IIS,并通过windows身份验证进行身份验证,然后应用程序模拟它们并作为自己连接到MachineA上的SQL。
MachineB正在运行另一个Server实例,以进行测试,我已经通过通过SSMS (on MyWorkstation) => SQL Server (on MachineB) => SQL Server (on Machine A)运行SELECT * FROM [MachineA].[My App DB].App.SomeTable,验证了为双跳服务器设置SQL是正确的。
IIS上的MyApp设置为模拟和MachineB身份验证(仅限协商),并在以MyAppSvc形式运行的MyAppPool中运行。system.webServer/ security/ authentication/ windowsAuthentication @useAppPoolCredentials为真,@useKernelMode为假。对于不受约束的委托,MachineB和MyAppSvc都是可信的。MyAppSvc上有两个SPN:HTTP/myapp和HTTP/myapp.contoso.local。
使用wireshark,当我尝试浏览http://myapp/aPage时,我看到了以下内容:
发布于 2015-09-25 00:37:39
问题是,DNS条目是CNAME记录,而不是A记录,再加上SPN是为主机名MyApp而非机器名MachineB设置的。解决方案是要么将MyApp的DNS条目更改为直接指向MachineB的IP地址的A记录,要么添加SPN、HTTP/MachineB和HTTP/MachineB.Contoso.local (可能会删除的旧记录)。
https://serverfault.com/questions/722872
复制相似问题