Asp.net

如何配置 IIS 以便在連接到 SQL Server 時使用使用者的域憑據?

  • November 9, 2021

我們最近發布了最新版本的 Intranet 應用程序,它現在使用 Windows 身份驗證作為標準,並且需要能夠使用最終使用者的域憑據連接到配置的 SQL 伺服器。

最近我們發現,在幾個客戶部署中,雖然 IIS 可以看到使用者的域憑據,但它不會將這些傳遞給 SQL 伺服器。相反,它似乎使用匿名帳戶。儘管遵循了所有正確的步驟(將目錄安全性更改為 Win Auth,更新 Web.Config 以使用 Win Auth 並拒絕匿名使用者),但這仍然存在。

我一直在做很多閱讀,表明我們需要確保 Kerberos 就位,但我不確定(a)這有多有效(即它真的是一個要求嗎?)或(b)如何去調查它是否已設置或如何設置它。

我們處於這樣一種情況,即我們需要能夠配置 IIS 或應用程序以供客戶使用,或者向客戶解釋他們需要做什麼才能使其正常工作。

我們已經設法在我們的內部網路上使用測試 SQL 伺服器和開發人員的 IIS 框重現了這個問題,所以我們要搞砸這個設置,看看我們是否能想出一個解決方案,但如果有人有任何好主意,我很高興聽到它們!

我特別想听聽人們對 Kerberos 的想法或建議。這是一項要求嗎?如果是,我如何向客戶概述它應該如何配置?

哦,我還看到一些人提到域和傳遞 Windows 憑據的“經典單跳規則”,但我不知道這實際上有多大權重?

謝謝!

馬特

這稱為雙跳問題,並禁止將使用者憑據轉發給第三方。當他們從一台機器瀏覽另一台(第一跳)上的站點並將憑據轉發到第三台機器(第二跳)時,就會發生這種情況。

如果您在同一台電腦上託管 IIS 和 SQL Server,則不會出現此問題。

How to use the System.DirectoryServices namespace in ASP.NET 中發布了更多技術細節,其中解釋了雙跳問題以及主要和次要令牌。

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