使用者反映某個 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 有關。utopia.net 是 branch.utopia.net 的上層網域,屬於 Parent-Child Trust;而 hq.utpia.net 與 branch.utopia.net 則是 Tree-Root Trust,有可能因為這層差異造成行為不同。我做了另一個測試,在 PC Windows\system32\drivers\etc\hosts 加了一筆 svc.utopia.net 指向 svc.hq.utpia.net,改連 svc.hq.utpia.net 就能自動登入,假設算是獲得證實。(我離開 AD 網域管理很久了,只能半專業瞎猜,如有高手路過,請不吝指正)

經過這番調查,大致摸出輪廓,解決問題有兩個方向:1) 調整網路設定,允許客戶端存取 hq.utopia.net DC 2) 為 svc.hq.utpia.net 主機申請 *.utopia.net FQDN,改用根網域等級的 URL 連網站。


Comments

Be the first to post a comment

Post a comment


69 + 17 =