2011-06-09 23 views
0

我目前正在開發ASP.NET應用程序,我想獲取當前用戶/請求的用戶名&工作站。
我想使用NTLM和AuthorizationWWW-Authenticate: NTLM HTTP頭。NTML標題不會通過Firefox或IE發送

我已經在Firefox 4啓用這些設置:

network.negotiate-auth.trusted-uris = http://localhost 
network.negotiate-auth.delegation-uris = http://localhost 
network.automatic-ntlm-auth.trusted-uris = http://localhost 
network.ntlm.send-lm-response = true 

但我不螢火蟲或在我的應用程序(使用Request.Headers)獲得認證頭。
我也嘗試過使用IE 9,但它不會發送它。

我在這裏錯過了什麼嗎?

我以爲他們會在每個請求都會自動發送,一旦我爲可信賴的uris啓用了它們,它們也會在IE中自動發送,至少在內部網中也是如此。

ASP應用程序使用表單身份驗證,它應該保持這種方式作爲回退。

回答

2

只有當瀏覽器在對應的WWW-Authenticate標頭(NTLM和/或Negoriate)出現401錯誤時才發送NTLM /協商標頭。然後瀏覽器默默地提出一個請求,並附上您正在尋找的標題:

  • 如果在此靜默請求之前NTLM您將被要求登錄/ pwd。然後,如果瀏覽器再次收到401錯誤,請再次登錄/ pwd提示窗口彈出窗口。這將重複,直到正確的憑據或取消按下。來自第二個應用程序的每個請求都將獲得身份驗證標頭。
  • 如果是Negotiate,只有在瀏覽器無法授權您的情況下,纔會要求您提供登錄/密碼。其餘部分與NTLM相同。

在其他請求中,不會發送這些頭文件。以及啓用匿名身份驗證和/或禁用所請求資源的窗口。

0

如果您在IIS中啓用了匿名身份驗證,則默認情況下會使用該身份驗證。爲了使用NTLM,您必須禁用匿名身份驗證。

+0

然後我得到「HTTP錯誤401.2 - 未經授權」,因爲標題仍然沒有在FF發送。使用IE瀏覽器,但標題也丟失 – 2011-06-09 11:41:56

+0

@Simon:從新鮮的FireFox安裝,我們只設置'network.negotiate-auth.trusted-uris',並使其工作。一個訣竅是它是一個COMMA分隔列表。如果你有多個URL被';'或其他分隔符分開,它將不起作用。 – Andomar 2011-06-09 12:53:29

+0

不,沒有效果。我只有與上述完全相同的配置,我試着只設置你的參數。我也重新啓動了我的Firefox多次,仍然得到了401.2 – 2011-06-09 13:33:52