我們使用使用Windows身份驗證的MVC 3在ASP.NET 4.0上創建ASP.NET應用程序。IIS7上的ASP.NET身份驗證問題 - 用於Windows身份驗證的User.Identity.Name爲空
從Visual Studio 2010運行時,一切都按預期工作,但是當推出到IIS7時,Windows登錄用戶永遠不會被填充(檢查User.Identity.Name)。沒有用戶憑證的對話框提示。
web.config中設置:
<authentication mode="Windows" />
在IIS中我可以看到,Windows身份驗證被啓用,因爲是匿名的(禁止在故宮403匿名結果,並沒有內容被顯示)。
我已經嘗試啓用和禁用「內核模式身份驗證」(useKernelMode =「true」),但這似乎沒有任何區別。雖然我確實記得我們必須在另一臺服務器上的其他站點上禁用此設置才能使驗證正常工作(可能會指出堆棧中的潛在問題?)。
在情況下,它是非常有用的,從IIS的的applicationHost.config:
<security>
<authentication>
<anonymousAuthentication enabled="true" />
<digestAuthentication enabled="false" />
<basicAuthentication enabled="false" />
<windowsAuthentication enabled="true" useKernelMode="false">
<providers>
<clear />
<add value="NTLM" />
</providers>
</windowsAuthentication>
</authentication>
</security>
任何想法的問題可能是什麼?
在此先感謝您的任何建議。
更新1
我設法找到另一個IIS7服務器上測試,我發現,如果我禁用根據需要匿名訪問一切正常。不過,即使我禁用匿名訪問(我現在仍禁用匿名),我仍然在原始IIS7服務器上遇到問題。所以我猜想一定會有一些問題進一步下降。有任何想法嗎?我需要解決一些問題,因爲它會不斷彈出並咬我們我想象的。
更新2
如果我對這個問題IIS7框,然後我挑戰的登錄提示對話框啓用摘要式身份驗證,一切都按預期工作,如果我提供合適的憑據。但作爲一個內部網絡應用程序,用戶已經登錄到該域,我們並不想用這種方式挑戰它們。應該透明地傳遞憑證,因爲它在第二個IIS7框上工作。
更新3
一些進展......我發現,如果Web應用程序是根,而不是一個子網站,然後直接編輯applicationHost.config文件的IIS7給予以下認證設置允許網站按預期方式工作:
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true">
<providers>
<clear />
<add value="NTLM" />
</providers>
</windowsAuthentication>
<digestAuthentication enabled="false" />
</authentication>
使用IIS7的UI來配置身份驗證不會給出正確的結果。身份驗證項目在病房後丟失(因爲我猜IIS7假設他們正在被繼承),或者他們有錯誤的設置(windowsAuthentication似乎需要上面提供的配置工具配置才能正常工作)。
不幸的是,有問題的Web應用程序實際上是一個子應用程序,因爲它有一個內部版本(使用Windows身份驗證> www.site。com/internal)和外部版本(使用表單身份驗證> www.site.com/external)。我仍然無法將身份驗證作爲子應用程序工作。我只是得到一個「錯誤代碼:403禁止」。
檢查這一個:http://stackoverflow.com/questions/1067591/user-identity-name-blank-in-asp-net-mvc –
什麼瀏覽器你測試與?如果是Firefox,你可能想看看:https://addons.mozilla.org/en-US/firefox/addon/integrated-auth-for-firefox/ Firefox沒有正確的啓用windows身份驗證框。 – NotMe
乾杯大衛,但沒有幫助那裏。這個人似乎有問題讓Windows身份驗證工作,因爲他錯過了web.config設置(所以無法在VS或IIS中工作)。在VS中,一切正常,對IIS來說,事情並不像預期的那樣行事。 – Gavin