使用 CNAME DNS 記錄時出現 Kerberos 錯誤 APP_MODIFIED
我有一個生產伺服器,我稱之為
CONTOSO\MachineA
,執行 SQL Server。CONTOSO\MachineB
我有一個執行 IIS的開發伺服器,我稱之為。兩台伺服器都執行 Windows Server 2008。我有一個域使用者,我將其稱為CONTOSO\MyAppSvc
. 我有兩條 CNAME 記錄,myapp => MachineA
並且myappdev => MachineB
.我的目標是讓(內部網)客戶端連接到 IIS
MachineB
並通過 Windows 身份驗證進行身份驗證,然後讓應用程序模擬它們並以MachineA
自己的身份連接到 SQL。MachineB 正在執行另一個 SQL Server 實例以進行測試,並且我已經通過執行
SELECT * FROM [MachineA].[My App DB].App.SomeTable
通過SSMS (on MyWorkstation) => SQL Server (on MachineB) => SQL Server (on Machine A)
.
MyApp
在 IIS 上MachineB
,設置了模擬和 Windows 身份驗證(僅限協商)並在MyAppPool
其中執行,以MyAppSvc
.system.webServer/ security/ authentication/ windowsAuthentication @useAppPoolCredentials
是真的,@useKernelMode
也是假的。MachineB
並且MyAppSvc
對於無限制的委託都值得信賴。MyAppSvc
:HTTP/myapp
和上有兩個 SPNHTTP/myapp.contoso.local
。使用wireshark,當我嘗試瀏覽時看到以下內容
http://myapp/aPage
:
我的工作站 => 機器 B
- 獲取 /aPage
- 主持人:myapp
MachineB => 我的工作站
- 401未經授權
- WWW-認證:協商
我的工作站 => 機器 B
獲取 /aPage
主持人:myapp
授權:票:
- 領域:CONTOSO.LOCAL
- 名稱:HTTP/MachineB.Contoso.local
MachineB => 我的工作站
401未經授權
WWW-認證:
- 錯誤程式碼:ERR-MODIFIED
- 領域:CONTOSO.LOCAL
- 下載:MyAppSvc
問題在於 DNS 條目是 CNAME 記錄而不是 A 記錄,以及 SPN 是為主機名
MyApp
而不是機器名設置的事實MachineB
。解決方案是將 DNS 條目更改為MyApp
直接指向 IP 地址的 A 記錄,MachineB
或者添加 SPNHTTP/MachineB
和HTTP/MachineB.Contoso.local
(舊的可能會被刪除)。