2008-08-13 69 views
7

我有一個在IIS 6.0下正常工作的網站:它使用Windows憑據對用戶進行身份驗證,然後在與訪問數據庫的服務交談時傳遞證書。在IIS 7.0中的模仿

在IIS 7.0中,相同的配置設置不會傳遞證書,並且數據庫會被NT AUTHORITY \ ANONYMOUS命中。

有什麼我失蹤了嗎?我在我的IIS 7.0網站中關閉了匿名訪問權限,但是我無法使其正常工作。

這些是我使用的是IIS都設置6.0和7.0:

<authentication mode="Windows"> 
<identity impersonate="true"> 

什麼從6.0改爲7.0?

回答

8

IIS7和IIS6.0之間已經發生了變化。我找到了一個可能真正幫助你的博客文章(click here to see it)。

您是在集成模式還是在經典模式下運行您的應用程序?從我看到的將Impersonate屬性設置爲true應該會顯示500錯誤,並顯示以下錯誤消息:

內部服務器錯誤。這是HTTP 錯誤500.19:請求的頁面 無法訪問,因爲頁面的相關 配置數據爲 無效。

這裏是提出瞭解決辦法:

解決方法:

1)如果您的應用程序無法在在的BeginRequest和 AuthenticateRequest階段冒充請求用戶 依靠 (中只有 階段,其中冒充不是 可能在集成模式),忽略 此錯誤通過將以下內容添加到 應用程序的web.config:

<validation validateIntegratedModeConfiguration="false" 

/>

2)如果您的應用程序依靠的BeginRequest 模擬和 AuthenticateRequest,或者你是不是 肯定,移到經典模式。

我希望這對了解IIS 7.0的工作原理非常有用。

+0

@Maxim,這對我來說不再是問題,但它確實有助於理解問題。謝謝! – 2009-02-23 18:03:17

0

有趣的...我有相反的問題 - 不能夠得到驗證,從客戶端瀏覽器的大型企業網絡中防火牆上通過,通過網絡服務器和到數據庫。

我也覺得對數據庫的「端到端用戶」身份驗證是一個壞主意和潛在的安全風險。沒有什麼能夠阻止最終用戶加載SQL查詢並直接連接到數據庫,所以最好讓您的模式被鎖定!

@Esteban - 澄清我的不是很有用,可以幫助你回答。

0

通常,如果您正在進行像這樣的雙重身份驗證,Kerberos通常會涉及到,除非第一個身份驗證是Basic。

我將在IIS 6服務器上檢查認證,並確保它在IIS 7

如果IIS 6框設置爲Windows集成一樣,那麼你需要驗證的Kerberos設置 - 的SPN ,代表團等

1

您的IIS服務器是否設置爲受SQLServer委派信任?我之前用WebDAV遇到過這種情況,我們必須讓服務器運行受文件服務器信任的IIS,才能代表文件服務器進行身份驗證。