
- 我們使用squid作為HTTP代理(如果需要我可以修改它的設定)。
- 我們要造訪一個使用ntlm進行身份驗證的網站
- 當我們透過魷魚造訪網站時,我們看到一個空白頁面
- 當我們透過 DSL 框訪問網站時,我們會看到一個身份驗證彈出視窗(期望的結果)
我不太了解 NTLM ... 瘋狂的想像力 ... 蹩腳的 protolol ... grmbl grmbl :D :D :D
該線程說它無法完成:http://www.squid-cache.org/mail-archive/squid-users/200708/0578.html
有哪位高手可以提供解決方案或解決方法嗎?
以下是所需網站的連接埠 80 上的 telnet 輸出:
Trying 111.222.333.444...
Connected to www.extranet-example.com (111.222.333.444).
Escape character is '^]'.
GET /index.htm HTTP/1.1
host: www.extranet-example.com
HTTP/1.1 401 Unauthorized
Server: Microsoft-IIS/7.5
SPRequestGuid: 2764478a-b14a-4541-9110-27ebf4281e84
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET
MicrosoftSharePointTeamServices: 14.0.0.4762
Date: Mon, 25 Nov 2013 14:25:26 GMT
Content-Length:
0
獎勵:我們使用 2 個鍊式代理程式 (squid-2.6 rhel5) 伺服器
編輯:使用 NTLM 進行魷魚身份驗證不是我們想要實現的目標。
編輯 2:我們嘗試造訪的網站位於我們公司之外、我們的網路之外。事實上它是一個有公共IP的公共網站。如果我從代理配置中排除該網站,它將無法工作,因為我們的工作站沒有到互聯網的路由,也沒有直接連接。
答案1
NTLM 是面向連接的,由於使用代理程式時您和網頁伺服器之間沒有直接連接,因此 NTLM 會失敗。 (您和代理之間有一個連接,代理和網站之間有第二個連接。)
如果您無法升級至 Kerberos 驗證,您最好的選擇是將網頁伺服器新增至用戶端設定中的代理排除清單(PAC 檔案?)。通常,由於這個原因,公司 Intranet 上的內部伺服器(這是您期望 NTLM 驗證的地方)被排除在代理之外,並且客戶端直接連接。
編輯
顯然,Squid 中有一個用於 NTLM 直通身份驗證的選項:連接固定。 Squid 版本 2.6 及更高版本以及 3.1 及更高版本可用。
http_port ... connection-auth[=on|off]
https_port ... connection-auth[=on|off]
答案2
根據所提供的信息,我認為您無法創建一種解決方法來在 Internet 上使用 NTLM over Squid,而不需要以某種方式「跳出框框」。
一個可能的建議是使用 HAproxy(它執行 TCP 反向代理)在網路中建立一個本機 URL,將請求傳送到另一端的網站。如果您必須經過 2 個不同的躍點(即執行 Squid 的 2 台機器),那麼您將必須設定兩個實例。
配置將類似於:
listen localsite 0.0.0.0:80
mode tcp
balance roundrobin
option tcplog
server upstream1 1.2.3.4:80
雖然您必須運行單獨的應用程序,但 HAproxy 非常輕鬆(安裝單一套件、10 行設定檔、幾乎 0 配置、0 維護)。
另一種選擇是修改系統的配置以啟用某種 SSO,然後使用本機 NTLM 驗證器啟動與上游系統的會話。這可能意味著系統的開發和更改。
我認為我從未見過 NTLM 在 Internet 上使用,它通常在 LAN 中使用。也許如果你擴展一下情況,我們可以建議一個替代策略。