同事來求救! 說他們有兩台IIS,用IE輸入http: //192.168.1.1/webApp可以順利用網域帳號登入,但用http: //machineName/webApp卻會一直跳出帳號密碼登入對話框,輸入三次後則傳出驗證失敗錯誤。兩台IIS都有加入Domain,所以可以輸入機器名稱就連到主機;用IP時可以登入成功,表示IIS認得網域帳號,與DC間的連繫應該也是OK的。

由現象來看,問題出在IIS Authentication過程,於是我首先想到的是用Fiddler觀察認證過程。比對之下,發現二者的認證過程有差異,當輸入機器名稱時,IE一開始會送出NTLM認證,但從第三個Request起卻會變成Kerberos... (IP時則是從頭到尾使用NTLM)

或許有些人有印象,我之前處理過一次WSS一直跳出帳號密碼的狀況,當時也是Kerberos惹的禍。我對AD的研究不深,無力參透IIS與IE間何時會用NTLM,何時改走Kerberos的祕密,不過照方煎藥倒難不倒我。

在有問題的機器上執行cscript adsutil.vbs set w3svc/1/ROOT/NTAuthenticationProviders "NTLM",限定IIS只准用NTLM。再測一次,果然用機器名稱也可順利登入了。但問題真正的原因仍然是個謎,看看過往的高手達人們,有沒有人要出面露兩手為大家解惑。


Comments

# by CJ

machineName 需要到 DNS 去指向導回來 , 造成IIS誤判的情形 , 有可能是這點造成的; 詳細的原因 , 我也不是很清楚 ! 不知道IIS的主機是否跟USER的主機同網域

# by Jeffrey

to CJ, IIS主機與Client機器都加入同一網域。另,ping machineName時檢查DNS(DC)轉譯得到的IP與我們認知的IP是同一個,一開始有特別留意machineName與IP指的是不是同一台機器以免被耍,這點有確認過。

# by kkbruce

檢查IIS主機TCP/IP中DNS設定,指定到DC看看。

# by Will 保哥

類似的問題我有遇過,不知道是否有一樣? 以下連結的問題1 http://blog.miniasp.com/post/2008/11/Visual-Studio-NET-2003-Development-Machine-Install-and-Setup-Note.aspx 可修改機碼 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa 新增一個 DWORD 值: DisableLoopbackCheck=1 參考網址:http://support.microsoft.com/kb/896861/en-us

# by swimming

有試過使用FQDN嗎? 我之前在轉換虛擬目錄的路徑時有遇過類似的情形。

# by Lattelul

之前遇過一直重複跳出帳號認證視窗,原因是主機時間與AD主機時間落差5分鐘以上

# by Jeffrey

to Lattelul, 謝謝補充,想起我也有過因時間不一致導致登入失敗的經驗: http://blog.darkthread.net/post-2010-09-09-lmcompatibilitylevel.aspx

# by

從 skychang 的網站看到類似的問題,但應該是不一樣的問題,skychang 描述的情形用黑大說的改成限定 NTLM 應該還是會認證失敗才對,至少我遇到的情形是這樣 https://skychang.github.io/2011/08/04/IIS%E4%BD%BF%E7%94%A8Windows%E9%A9%97%E8%AD%89%E6%99%82%EF%BC%8C%E7%84%A1%E6%B3%95%E7%99%BB%E5%85%A5%EF%BC%8C%E4%B8%94%E6%9C%83%E5%87%BA%E7%8F%BE401-1-%E9%8C%AF%E8%AA%A4%E3%80%82/ 官方介紹的解法,裡面也有提到保哥說的 DisableLoopbackCheck https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/accessing-server-locally-with-fqdn-cname-alias-denied

Post a comment