Try using digest authentication on the IIS side instead of NTLM
authentication if your infrastructure supports it. It is equally
secure, and you can use the same username and password. If you’re
already using SSL, basic authentication is fine too. Both of these
options will prompt for a username and password, but you can still use
the windows username and password.
May I ask an very stupide question, what do you mean by nginx is not
supported back-end keep-alive?
I checked with wireshark, both NTLM and MD authentication are using the
same TCP connection, as far as I understand, nginx is just do a forward
job, so the question is that why nginx could foward the MD request to
the client but not NTLM request?
On Mon, Jan 09, 2012 at 03:00:13AM -0500, cn_nginxer wrote:
Hello Ryan,
May I ask an very stupide question, what do you mean by nginx is not
supported back-end keep-alive?
Backend keepalive http connections are supported since nginx 1.1.4, but
it doesn’t help to proxy NTLM. See below.
I checked with wireshark, both NTLM and MD authentication are using the
same TCP connection, as far as I understand, nginx is just do a forward
job, so the question is that why nginx could foward the MD request to
the client but not NTLM request?
NTLM is connection-based and requires the same connection to be
used for other requests from the client. It’s not going to work
through http proxy servers as “the same connection for the same
client” isn’t guaranteed by http proxy servers. See here for
details:
Digest authentication, in contrast, doesn’t rely on the same
connection to be used. Instead, client provides data originally
supplied by the server (nonce value) in each request. See here
for details:
I finally get the idea about the connection.
It is not a TCP connection, it is a persude connection in HTTP level.
The NTLM will keep the authenticated HTTP connections info for
subsequent connections, so in this case, it should be a bundle TCP
authed connections. And for sure, if it works in this way, every proxy
won’t work with this evil!!! Since this is not the first time I face
difficultis with MS system, I totally do not understand why MS could do
sth that compliable with industrial standard?! I should say MS makes
more valuable, I damned love it!
But I am still not quite understand about term “connection-based”. I
checked with wireshark again, even NTLM auth schema, it did not just use
one socket to transport the whole data, it also uses several sockets to
transfer a HTML page in parallel. So it works just like Digest
Authentication, at least, in the auth process, they are the same. So I
am totally stuck in here, where is the session info and how does Win NT
keep them? And if what I have noticed was true, why Digest
Authentication worked but not NTLM?
Hello,
Actually there is no solution for time being, what I did was, I use
digest authentication instead. But my case, if NTLM is abandoned the
user need to enter password every time he log into the system, so you
need to put that into your account. Should you have any further
questions do not hesitate to come back to me.
Here, if i understand well, i only have to replace “server 1.1.1.1:80”
in
the sample i gave with “server ip-of-my-exchange-server:443”
and do a “proxy_pass https://http_backend” that’s all and that will
support
Windows auth ?? great !
On Tue, Feb 16, 2016 at 03:37:01AM -0500, cehes wrote:
server {
Is this the solution ?
Somebody tried it ?
No, this is not expected to work - unless you are using the server
with exactly one user.
Proper support for Windows Authentication (aka NTLM) requires
connections to backend servers to be bound to particular
connections to clients, as NTLM authenticates connections, not
requests. By using common keepalive pool as in the configuration
above any authentication will basically authenticate arbitrary
clients who happen to use the authenticated connection from the
cache of keepalive connections to upstream servers.
Proper support for proxying NTLM authentication was recently
implemented in our commercial version, see Module ngx_http_upstream_module.
I read your link and i can see that you added the keyword ntlm. You mean
that i won’t have that in the free version and that i have to purchase a
commercial version, that’s the only way, correct ?
I did not even know there were a commercial version
On Wed, Feb 17, 2016 at 05:34:43AM -0500, cehes wrote:
I read your link and i can see that you added the keyword ntlm. You mean
that i won’t have that in the free version and that i have to purchase a
commercial version, that’s the only way, correct ?
Yes. If you want to keep things free, consider switching from
proprietary and non-standard NTLM to standard Basic
authentication.
Alternatively, you can try using stream module to proxy
connections instead of HTTP requests, see Module ngx_stream_core_module. This
approach has obvious downsides though.
Where can i find the right version for that ? (the commercial one)
I went on www.nginx.com and saw “nginx plus” is that what you’re talking
about ?
I went on compare version but did not see NTML support.
Will it be easy to upgrade from free version to the right one ?
Do you have an idea of the price, i only see support prices.