目前的專案,用ASP.NET開發,IIS設定為整合式windows驗證,取消匿名存取,直接抓使用者windows登入名稱登入,不須手動輸入帳號密碼。
開發環境:.NET2.0, IIS5(win xp), IE8
正式環境:.NET2.0, IIS6(win server 2003),使用者多為IE6 SP2
上線後發生一件怪事,使用者IE6連上系統網址時,會跳出帳號密碼登入對話框,沒辦法直接登入。但有兩個旁門左道可以成功登入:
- 按取消後變更網址,例如把 default.aspx拿掉,又可以進去。
- 開啟IE6後,先打開任一網頁,再從我的最愛或直接輸入網址進入系統,就可以成功登入。
超見鬼,這比之前的TreeView鬼打牆事件還神奇。
回頭找幾個還是用IE6 SP2同事測試了一下,卻可以正常登入。
原本想是跟網域有關,但檢查後發現user, 同事, server的網域都一樣。
糟糕,沒輒了。
Google了幾個網頁,發現可能跟瀏覽器以NTLM或Kerberos方式回傳有關,似乎若用Kerberos回傳,就可能出現這樣的情形。
另外,如果server裝了WSS似乎也會有影響。
不過這兩個情形都不是我可以處理的,server上還有其他的網站在跑,不能亂動。
所以現在只能先讓user用爛方法頂著先:幫user設定首頁(不可為空白頁),然後把系統網站加入我的最愛,要user先啟動瀏覽器,再由我的最愛開啟網站 Orz...
參考資料:
重新把 Internet Explorer 可能會提示您輸入密碼--MS Support 的內容一條一條看過,發現...
Internet Explorer 必須認定要求的 URL 屬於近端內部網路 (本機)。如果所要求 URL 的電腦名稱部分有包含半形句點 (例如 http://www.microsoft.com 和 http://10.0.0.1),Internet Explorer 會假設要求的位址存在於網際網路上,而不會自動傳遞任何認證。不含半形句點的位址 (例如 http://webserver) 將視為位於近端內部網路 (本機);因此 Internet Explorer 會自動傳遞認證。唯一例外是包含在 Internet Explorer 近端內部網路區域中的位址。也就是說,在user的電腦把系統網址加入信任網站清單就好了...............Orz
一整個是我想太多...........