2012-11-22 52 views
1

我有一個WebAPI應用程序,希望使用Forms認證或我自己的自定義Basic或摘要式身份驗證。它在大多數服務器上工作正常。但是在幾臺服務器上它不起作用。IIS使用AuthenticationType = Negotiate對應用池用戶進行意外身份驗證

我發現當身份驗證失敗時,它是因爲IIS已經對App Pool用戶進行了身份驗證。 Thread.CurrentPrincipal.Identity.AuthenticationType =「協商」。 AFAIK這是Windows身份驗證。但是,對於有問題的站點,Windows身份驗證已被禁用,我甚至在卸載服務器上的Windows身份驗證功能時仍然遇到同樣的問題。

我發現將runAllManagedModulesForAllRequests設置爲true將解決此問題,但它不是一種令人滿意的解決方法,因爲它會爲所有請求(即使是通過靜態處理程序運行的那些請求)增加開銷。

如果有人能告訴我爲什麼會發生這種情況,或者如何在IIS上調試身份驗證過程,這將非常有幫助。

編輯: IIS7/7.5綜合管線,如果它的確與衆不同

回答

1

雖然遇到了類似的問題,這是我的觀察和建議。

該問題可能與匿名用戶身份被用作的匿名user account有關。默認設置可能是問題。請閱讀這裏更多的細節:

摘要

使用IIS 7.0的用戶界面,去認證頁面並選擇匿名身份驗證。然後在右側點擊Edit並選擇用於此目的的用戶。如果這個(新選擇的)用戶可以訪問所有靜態文件,則所有人都應該開始工作。選擇App Pool Identity將授予爲當前池用戶帳戶指定的訪問權限。

默認值是IUSR,這是更詳細的描述如下:

Missing IUSR account on Windows Server 2008 R2/IIS7.5

+0

很好的建議,但似乎並沒有爲我所面臨的問題。 – ScottS

相關問題