NTLM 代理程式驗證作為 Windows Server 2008 上的本機系統

NTLM 代理程式驗證作為 Windows Server 2008 上的本機系統

我有一個應用程式需要透過僅支援針對本機網域控制器的 NTLM 驗證的代理程式發送 HTTP 請求。我正在使用 libcurl SSPI 建置來傳送請求,該請求在作為本機系統的 Windows 7+ 和作為網域使用者的 Windows Server 2008 上執行。

然而,當我在 S2008 上以本機系統使用者身分執行應用程式時,代理程式驗證失敗。對 NTLM 握手的檢查顯示:

  • 「協商匿名」標誌由 S2008 用戶端設置,且
  • 沒有發送任何用戶詳細資訊。

在 Windows 7 + 上,不使用匿名驗證,而是使用電腦身分憑證。一些研究表明,使用電腦憑證取代匿名 NTLM 驗證是 Windows 7+ 中的新功能(請參閱技術網)那麼,如果是這種情況,有什麼方法可以在網域控制站或代理程式上啟用匿名身份驗證以允許匿名身份驗證成功嗎?

我使用帶有 winbind 的 Squid 3.2.8 代理程式和 Windows Server 2012 R2 網域控制站。

答案1

Windows Server 2008 上的這些驗證問題是由於 Windows 7/Windows Server 2008 R2 + 上的 NTLM 功能差異所造成的。

為了啟用這些舊版作業系統的身份驗證,必須啟用並配置三個群組原則設定Computer Configuration/Policies/Windows Settings/Security Settings/Local Policies/Security Options

  • 網路安全:基於 NTLM SSP(包括安全性 RPC)客戶端的最低會話安全性 - 清除“需要 128 位元加密”
  • 網路安全:基於 NTLM SSP(包括安全性 RPC)伺服器的最低會話安全性 - 清除“需要 128 位元加密”
  • 網路安全:允許本機系統將電腦身分用於 NTLM - 啟用此策略

應用這些變更後,舊作業系統能夠成功驗證並遍歷代理程式。

相關內容