IIS、SQLServer、Google Chrome 和 Windows 身份驗證
我現在在網際網路上搜尋了將近 4 天,但我被卡住了。
我創建了一個簡單的 ASP MVC4 Intranet 網站,並將其部署到名為:
iis
. 那台電腦與我的電腦位於同一個域中。在我的域內,我有 3 台電腦:
my_pc
伺服器iis
和sql
伺服器。當我在我的電腦上輸入地址
http://iis
時,我看到我已正確登錄:這適用於 IE 和 Chrome。<- 到目前為止一切正常!
當我嘗試在我的網頁 - WebAPI 控制器中進行 sql 查詢時,問題就開始了。
在 IE 上我得到正確的結果,但在 Chrome 上我得到錯誤:
在 Web.config 中,我需要配置:
<authentication mode="Windows" /> <identity impersonate="true" />
在 IIS 內部,我禁用了匿名身份驗證並啟用了 Windows 身份驗證。
我的 IIS 受信任可以將請求委託給我的 SQL 伺服器。
最奇怪的部分是,當我嘗試打開我的網頁(使用 sql 查詢)時出現錯誤,然後當我在 IE 中打開相同的網頁(這是成功的)並且我刷新 Chrome 網站時正確載入並工作了一段時間(隨機,有時 5 分鐘,有時 30 秒)。
我嘗試將
[Authorize]
屬性添加到特定方法,但這沒有幫助。看起來 Chrome 沒有將 kerberos 令牌傳遞給 IIS。
我已經嘗試過這裡描述的步驟:http: //dev.chromium.org/developers/design-documents/http-authentication但沒有任何運氣。
有人可以指導我一步一步如何配置 Google Chrome 和休息(如果需要,IIS,SQL)以在 Chrome 中使用 Windows 身份驗證?
您的問題是您正在使用鉻文件來解決鉻問題。雖然相似,但它們是兩種不同的瀏覽器。您需要通過將 IIS 可以委託給的伺服器列入白名單來啟用委託。您在 Chrome 中執行此操作的方式類似於 chromium,但對於您需要使用的系統資料庫項
$$ HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome $$用於鍍鉻而不是$$ HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Chromium $$為鉻。 當您閱讀文件時,您會發現您可以使用組策略、Chrome for Business 或命令行來啟用委派,但在您的設置中,我假設您使用了系統資料庫選項。我發現設置的關鍵是AuthNegotiateDelegateWhitelist。將值設置為“*”以開始。一旦你讓它工作,通過將 * 更改為以逗號分隔的伺服器列表(按 IP 地址或 DNS 名稱),將其鎖定到您想要的伺服器。允許使用萬用字元。您可能還想查看 AuthServerWhiteList 鍵。