Asp.net

ASP.NET 4.0 和 SQL2008R2 中的 Kerberos 雙躍點

  • December 5, 2012

我有一個 ASP.NET 4.0 應用程序,我需要在其中將身份驗證轉發到數據庫。出於此請求幫助的目的,我們將 Web 伺服器稱為“app1”,將數據庫伺服器稱為“sql1”。

SQL2008R2 數據庫服務在自定義域帳戶“SqlServer”下作為命名實例“SQL2008R2”執行。伺服器正在執行 Windows Server 2008 R2 企業版。我為此創建了一個 SPN…

setspn -a MSSQLSvc/sql1.mydomain.local:SQL2008R2 SqlServer

ASP.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}

http://blogs.technet.com/b/taraj/archive/2009/01/29/checklist-for-double-hop-issues-iis-and-sql-server.aspx

http://www.phishthis.com/2009/10/24/how-to-configure-ad-sql-and-iis-for-two-hop-kerberos-authentication-2/

http://support.microsoft.com/kb/810572

IIS 到 SQL Server kerberos 身份驗證問題

當您為 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

它基本上會在整個過程中握住你的手。我們發現該工具非常寶貴。

引用自:https://stackoverflow.com/questions/13706580