IIS:更改 Windows 身份驗證的預設域控制器
請多多包涵,我是一名軟體開發人員,對 Active Directory 和 Windows Server 域知之甚少。
我在IIS(Windows Server 2016 Standard)上執行 .NET MVC Intranet 應用程序,該應用程序使用 Windows 身份驗證(Negotiate,NTLM,按此順序)。我們的域使用多個域控制器(我已通讀此答案以檢查為什麼需要多個 DC,並且不再有任何“主”和“備份”DC 的概念)。昨天,在域控制器的一些遷移過程中,我們的使用者無法對應用程序進行身份驗證。有人告訴我,在出現身份驗證問題時,IIS / 應用程序使用的“預設”域控制器在遷移過程中關閉了一段時間,並且 IIS 沒有聯繫域中的任何其他 DC。
在我們的應用程序中,域控制器沒有硬編碼的 IP 地址或主機名。那麼 IIS / 應用程序如何確定它必須使用哪個 DC 進行 Windows 身份驗證?
我可以在應用程序或 IIS 中的某處更改或配置 IP 地址嗎?最重要的是,我可以配置任何其他 DC 的 IP / 主機名作為備份,這樣以後就不會再發生這種情況了嗎?
我之前在 Stacked Overflow 上問過這個問題,我被告知這與程式無關,並被重定向到 Server Fault。所以我假設我無法解決任何程式碼問題。雖然我不是 AD 專家/域管理員,但我仍然樂於接受新知識並獲得該領域的經驗。它肯定會在未來的案例中幫助我的發展事業。
如果您需要更多資訊,請隨時詢問。
先感謝您。
這是一個很好的問題,我不能 100% 確定 IIS 是如何做到的,但這裡有一些資訊可以指導你。
通常,站點中的 Active Directory DC 是根據站點和服務配置來選擇的。客戶端將嘗試使用對 domain.com 的 DNS 解析來查詢域。由於域上的所有 DC 通常用作域 DNS 上的循環 NS 記錄,因此將隨機選擇並 ping 一個 DC。然後,該 DC 將檢查子網列表的站點和服務,並將客戶端與分配給該子網的站點相匹配。一旦選擇了站點,通常至少有兩個 DC 可供選擇。我不確定如何選擇站點中的特定 DC,但我認為這是基於負載或循環。一旦系統從這個過程中拉出該 DC,它往往會堅持使用該 DC 以進行將來的身份驗證,直到發生錯誤並強制它使用新的 DC。這可能是您遇到的問題。IIS 載入了特定的 DC,即使該 DC 不再可用,它仍在嘗試查詢它。程序或 Web 伺服器的重置將清除記憶體的身份驗證。
令我驚訝的是,微軟沒有更強大的故障轉移方法,但似乎很多其他人也看到了類似的問題:https ://community.spiceworks.com/topic/407295-webserver-with-domain-authentication -doesn-t-failover-when-one-dc-is-gone
我會仔細檢查您的 IIS 伺服器是否設置為使用多個 DC 作為 DNS 源,並且您的站點和服務子網和站點已正確設置。我還將調查 IIS 設置使用的各種身份驗證方法,看看另一種是否更符合您的需求。
仔細檢查其他 DC 是否確實線上並且也正常執行。我遇到過這樣的情況:我假設站點中的所有 DC 都正常執行,但在重新啟動單個 DC 時被證明是錯誤的導致站點失敗。可能 C: 驅動器已滿,或者服務未正確啟動。一個常見問題是 DC 被設置為將自己用作主 DNS,並且 AD 在 DNS 服務之前啟動,導致其上的 DNS 和 AD 失敗。解決方法是將 DC 指向它的對等節點作為主節點。