Stack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.
So. This one is pretty close. It suffers from a few issues, though. 1) It does not transparently authenticate the logged-on user, instead it relies on a hardcoded username/password combination in config file. 2) It does upstream proxy authentication only, it cannot authenticate against an IIS webserver. 3) It does not pass-through authenticated requests from NTLM-capable clients (if such a thing is even possible)
Apart from that it is pretty sweet. A light-weight proxy server that can run as a Windows service, is quite configurable and handles proxy authentication easily. Not quite what I was looking for, sadly. Especially I'm missing a rule engine that decides whether or not to use a proxy server for certain requests.
I'm truly sorry for never accepting this answer in almost 13 years. I did not mean to - it has been an honest oversight. In fact, I'm still using cntlm to this day.
Can't believe I forgot Squid: free, open source, runs on windows and supports NTLM authentication. There is a native windows port of squid available in binary.
Privoxy will also work and is free, but it doesn't support NTLM authentication.
Squid would be an option, but I fear it is too heavy-weight in terms of resource consumption and configuration/maintenance effort. Does it even run on a Windows box?
I added a link to the windows binary above. There would be some configuration effort, but I think the feature set can be whittled down to the point where it doesn't take too much runtime overhead.
Can Squid take anonymous requests and turn them into NTLM authenticated ones for the upstream proxy? I intend to use it to enable legacy applications through the corporate proxy server.
In the past when I needed a proxy to allow a screenscraping script to talk to corporate servers that require NTLM authentication, I downloaded NTLM Authorization Proxy Server and it worked very well. You can get version 0.9.9.6 here.
I don't believe that it runs in the system tray, however you could try using SRVANY to change it into a service.
The only other way that I know which might work is curl but I'm not sure if this can just function as a general proxy. Go to the curl man page and scroll down to --proxy-ntlm
Hm... Too bad. a) It is a Python application, and will be no Python on the machines I intend to use it on, and b) it supports NTLM only if I put username/password in clear-text into the config. I thought of something that simply uses the current user's credentials.
@JeffP: It supports authenticating anonymous requests passing through it, even translates requests that have basic auth to NTLM. But only under the conditions I described above, which is a pity.