ASP.NET 4.0 和 SQL2008R2 中的 Kerberos 雙躍點
我有一個 ASP.NET 4.0 應用程序,我需要在其中將身份驗證轉發到數據庫。出於此請求幫助的目的,我們將 Web 伺服器稱為“app1”,將數據庫伺服器稱為“sql1”。
SQL2008R2 數據庫服務在自定義域帳戶“SqlServer”下作為命名實例“SQL2008R2”執行。伺服器正在執行 Windows Server 2008 R2 企業版。我為此創建了一個 SPN…
setspn -a MSSQLSvc/sql1.mydomain.local:SQL2008R2 SqlServerASP.NET 應用程序在集成管道模式下使用自定義域帳戶“WebApplicationUser”在應用程序池下執行。它目前在我執行 Windows 7 Enterprise 的筆記型電腦上執行,但最終將託管在 Windows Server 2008 R2 標準版上。我為應用程序創建了 2 個 SPN(在我目前執行的 Windows 7 機器上)…
setspn -a http/app1 WebApplicationUser setspn -a http/app1.mydomain.local WebApplicationUser在 Active Directory 使用者和電腦中,我選擇了“WebApplicationUser”帳戶,並使用任何協議啟用了對“MSSQLSvc/sql1.mydomain.local:SQL2008R2”的約束委派(我也嘗試過僅使用 Kerbero)。
該應用程序在 IIS 7.5 中設置,身份驗證設置為禁用 Anonymouse、Basic、Digest 和 Forms,同時啟用“ASP.NET Impersonation”和“Windows”。Windows 身份驗證關閉了“擴展保護”並啟用了“核心模式身份驗證”。提供者按順序是“協商”和“NTLM”。
ASP.NET 應用程序使用 EF,連接字元串配置為使用集成安全…
<connectionStrings> <add name="MyContext" connectionString="metadata=res://*/Data.MyModel.csdl|res://*/Data.MyModel.ssdl|res://*/Data.MyModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=sql1.mydomain.local\sql2008r2;Initial Catalog=MyDatabase;Persist Security Info=false;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" /> </connectionStrings>我的 web 配置指定了 Windows 身份驗證和模擬,因為我使用非同步頁面,所以我還啟用了模擬策略流動……
<runtime> <alwaysFlowImpersonationPolicy enabled="true" /> </runtime> <system.web> <authentication mode="Windows" /> <identity impersonate="true" /> </system.web>如果我在本地登錄(在“web1”上)並瀏覽到應用程序(使用 IE),這一切正常 - 但這不涉及我試圖解決的雙跳。
如果我登錄到另一台機器,然後使用 IE 瀏覽到應用程序,或者我使用 FireFox 從本地機器瀏覽,這不起作用 - 注意:FireFox 會提示我輸入登錄詳細資訊。與數據庫的連接失敗並顯示“使用者 ‘NT AUTHORITY\ANONYMOUS LOGON’ 登錄失敗”
與許多文章不同(這可能是問題的一部分),我沒有使用任何自定義程式碼來模擬使用者。據我了解,模擬將通過上面的 web.config 設置全面應用於應用程序。我所做的就是打開連接,然後在完成連接後再次關閉它。
我顯然錯過了一個(或兩個)步驟,但是查看了我能找到的所有文件(並且有很多),我仍然找不到那個步驟是什麼。我能找到的 99% 的文件實際上都與 IIS6 和 Windows 2003 相關,這無濟於事,但原則應該保持不變。
有沒有人成功讓這樣的配置在 Windows 7 和/或 Windows Server 2008 上執行?
雙跳問題清單 {IIS 和 SQL Server}
當您為 SQL Server 配置 SPN 時,我們發現我們需要包括 SQL Server 偵聽的 PORT (1433)。
您應該下載並使用 Brian Booth 的 DelegConfig v2 工具來幫助您設置正確的配置設置。 http://blogs.iis.net/brian-murphy-booth/archive/2009/04/22/delegconfig-v2-beta.aspx
它基本上會在整個過程中握住你的手。我們發現該工具非常寶貴。