我如何能實現在ASP.NET MVC應用程序如下:如何在ASP.NET MVC中使用回退來支持NTLM身份驗證?
- 用戶打開內部網站
- 如果NTLM身份驗證也沒有制定出
- 用戶被悄悄如果可能的話驗證,顯示登錄表單用戶
- 用戶指示登錄密碼並選擇域從
- 用戶正在使用AD
我知道如何實現4和5,但找不到關於如何結合NTLM和窗體的信息。 因此NTLM本地登錄/密碼對話框從不顯示 - 透明身份驗證或外觀漂亮的登錄頁面。
應該如何工作? 應該詢問用戶名和密碼嗎? 可以使用她當前的憑證(域用戶名)而不要求輸入登錄名和密碼?
更新這些,調查同樣的問題:
當我問這個,我不能完全理解NTLM身份驗證的內部工作原理。 這裏需要了解的重要一點是,如果用戶的瀏覽器不能正確支持NTLM,或者用戶禁用了NTLM支持,服務器將永遠無法獲得解決此問題的機會。
如何Windows身份驗證工作:
- 客戶端發送一個普通的HTTP請求到服務器
- 服務器,HTTP狀態爲401和指示NTLM身份驗證必須用於接入資源
- 客戶端發送NTLM響應類型1消息
- 服務器以帶有質詢的NTLM類型2消息進行響應
- 客戶端發送類型3消息以迴應質詢
- 服務器響應與實際內容請
正如你看到的,瀏覽器不支持NTLM不會轉到步驟(3),而不是生成的用戶將顯示IIS錯誤401頁。
如果用戶沒有憑據,取消NTLM身份驗證彈出對話框窗口瀏覽器將不會繼續(3)。
所以我們沒有機會自動將用戶重定向到自定義登錄頁面。
這裏唯一的選擇是有一個「網關」頁面,我們決定用戶是否應該支持NTLM,如果是,則重定向到受NTLM保護的主頁。
如果沒有,則顯示登錄表單並允許通過手動輸入登錄名和密碼進行身份驗證。
通常通過匹配IP範圍或通過檢查預定義的IP表來決定用戶的IP地址和/或主機名。
HTTP提供的鏈接://計算器。 com/questions/492977/anonymous-access-and-ntlm-authentication-in-iis – 2010-10-26 20:59:14