使用者反映某個 Windows 驗證網站,原本可以瀏覽器可以用登入 Winows 的 AD 帳號自動登入,後來變成會彈出輸入帳號密碼,需要重新敲帳號密碼。

問題跟 AD 架構有關,畫個圖說明一下:

AD 樹狀結構如上圖,根網域為 utopia.net,網站在 hq.utopia.net 子網域,使用者的 PC 在 branch.utopia.net 子網域。使用者使用 brahch\user 登入 Windows,使用 Edge 瀏覽 svc.hq.utopia.net,以前可以自動登入不需要再敲密碼,但現在每次會彈出帳密對話框,重敲密碼才能登入。

做了對照測試,得到一些線索:

  1. 能否自動登入,與使用的帳號有關,svc.hq.utopia.net 主機隸屬 hq 子網域,使用 branch 網域帳號登入 Windows 的話無法自動登入,改用 hq 子網域使用者帳號登入 Windows 則可自動登入。
  2. hq 子網域有另一台網站,雖然隸屬 hq 網域,但有註冊根網域的 FQDN portal.utopia.net,在 branch 網域的電腦,不管用 branch 或 hq 網域的使用者帳號都可以自動登入,不需敲密碼。

很好,有好壞對照組,是老天爺助我一臂之力。用 Wireshark 側錄封包,很快掌握證據。

使用 hq 網域帳號自動登入時,瀏覽器會連續發出三次 GET,就如預期的標準 401、401、200 流程。(延伸閱讀:Windows 驗證歷程觀察與 Kerberos/NTLM 判別);使用 branch 網域帳號時,瀏覽器接到第一個 401 後,對 branch 端的 DC 主機發出 Kerberos (Port 88) 查詢,接著查詢 DNS _kerberos._tcp.KB-SITE._sites.dc._msdcs.hq.utopia.net 及 _kerberos._tcp.dc._msdcs.hq.utopia.net,查詢 hq 網域的 DC 清單(共有四台),並逐一嘗試連上這些 DC LDAP (Port 389),而問題就出在這裡! 由於前陣子網路調整,瀏覽器電腦所處網段目前無法存取 hq DC 網段,因此 LDAP 查詢無回應,Windows 總共會試兩輪,大約 10 秒後,彈出視窗對話框要求使用者敲帳號密碼。我的推測是 - 當網站與登入帳號分屬不同網域,客戶端需要連線網站所屬網域 DC 的 LDAP 完成某些額外認證才允許自動登入,之前網路暢通時,這段額外動作在背景完成並自動登入,使用者無感;現在網路不通,有等待八次試連的延遲,且因 LDAP 存取失敗無法自動登入。

至於 portal.utopia.com 為什麼能用 branch 網域帳號自動登入,依 Wireshark 觀察結果,不管使用 hq 或 branch 帳號登入都是 401、401、200 一氣喝成。網站跟 svc.hq.utopia.net 一樣隸屬 hq 網域卻不需要檢查 LDAP 的原因,推測與 URL 使用 portal.utopia.net FQDN 有關,因 portal.utopia.net 這個額外申請的名稱沒有註冊 SPN 記錄,不符合使用 Kerberos 的要件,故會切換改用 NTLM 登入。加做另一個測試,在 PC Windows\system32\drivers\etc\hosts 加了一筆 svc.utopia.net 指向 svc.hq.utpia.net,改連 svc.hq.utpia.net 就能自動登入,也可證明這點。

經過這番調查,大致摸出輪廓,解決問題有兩個方向:1) 調整網路設定,允許客戶端存取 hq.utopia.net DC 2) 為 svc.hq.utpia.net 主機申請其他 FQDN 或改用 IP URL 連上網站,避開 Kerberos 改走 NTLM 登入。


Comments

Be the first to post a comment

Post a comment