我有一個ASP.NET 4.0應用程序,我需要將身份驗證轉發到數據庫。 爲了達到此協助請求的目的,請調用Web服務器「app1」和數據庫服務器「sql1」。ASP.NET 4.0和SQL2008R2中的Kerberos雙跳
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中設置,並且在啓用「ASP.NET模擬」和「Windows」時將身份驗證設置爲禁用Anonymouse,Basic,Digest和Forms。 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身份驗證和模擬,因爲我一個使用異步頁面,我有流動也使inpersonation政策...
<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上工作?
在Web和數據庫服務器上啓用Kerberos事件日誌記錄:http://support.microsoft.com/kb/262177?wa=wsignin1.0 事件查看器是查找和修復kerberos錯誤的關鍵。 – brian
我已啓用此功能,並且還下載了網絡監視器工具,但我仍然無法看到足夠的信息來告訴我什麼是錯誤的。我想我沒有正確地閱讀,因爲我毫不懷疑答案就在那裏。 –