NTLM authentication fails with Plugin error

Bug
I’m trying to connect to an internal application that uses NTLM authentication. I know the endpoint works as the configuration works fine through postman (using NTLM authentication).
Using Yaak, i get the following error (both on windows, and when starting yaak through WSL)
The following pictures shows the configuration used for postman:

I’ve also tried using CURL for this request - where i can see that the www-authenticate header is included in the response (if i send no auth, obviously).
Is there anything else i can do to assist in finding the cause for this?
edit aside from this - awesome API client!
Windows2026.2.1
https://github.com/mountain-loop/yaak/releases/tag/v2026.3.0-beta.5
Unfortunately, i seem to still encounter this with 2026.3.0-beta.5
The error now changed slightly (which is obvious given the changes made) - but it’s still not actually authenticating (based on the code, it’s not getting to a point where credential correctnes is relevant just yet).
with 2026.3.0-beta.5:
Is there any way for me to get more detailed logs somehow?
Based on the code (and some tests with webhook.site) - it seems like the initial request already contains a “authorization: NTLM ”.
https://github.com/mountain-loop/yaak/blob/1e7e1232dac2748aba10df5ee8f574151d8451ae/plugins/auth-ntlm/src/index.ts#L70
If i compare this with postman (same ntlm config) - it’s not attaching the token in the initial request (querying this against the API in question WOULD result in a www-authenticate" header).
Now i’m not 100% familiar with details of the ntlm protocol - but it seems like Yaak is sending the authentication initially - so (assuming it’s a correct hash?) - would we still expect a “www-authenticate” to be in the response (I don’t think so but I’m not sure)?
Okay after some digging into how Curl handles it, I found there are two different strategies that can be used.
Curl’s default is what Yaak does now (sends the
Authorization: NTLM ...header immediately)The second method is enabling the
--negotiateflag, which will change the behavior to what Postman does (send regular request and expect aWWW-Authenticatechallenge header).It seems like the plain
--ntlmis supposed to work. Can you let me know theWWW-Authenticateheader formats returned by executing each of those on your server? Apparently some servers can also respond withWWW-Authenticate: Negotiate ...as opposed toWWW-Authenticate: NTLM ...which Yaak currently matches on.Thanks a lot for looking at this further!
using
curl --ntlm --negotiate <...>- i can’t get this endpoint to work (like - not at all). The returned headers are both Negotiate and NTLM - but Negotiate doesn’t work as i’m on linux and don’t have a kerberos ticket for that user available.Without negotiate:
now to be fair (and i’m not sure if this isn’t somehow related) - i did append
--http1.1to this call. without it - there’s an additional initial request where curl downgrades with the following “comment”:there’s essentially no repsonse (also no response header) in this initial request other than “handshake failed”.
Apparently the server can’t properly do http2 (yaak works without authentication - but probably becaues i get a plain 401 without further “discussion”?) Maybe there’s a way / setting to temporarily disable attempting http2 (which would replicate hte
--http1.1flag i pass to curl?Are there any redirects in the response chain for this? If so, do you have redirects disabled in Yaak’s settings?
Any chance you have a public endpoint or project that I can run, to reproduce this with?
I just tried with and without redirects disabled - but it didn’t change behavior.
Unfortunately, it’s a private endpoint (from an ERP system, no less) which we can’t expose.
I’ve tried a curl request for this with
-vand got the following response. as far as i can tell, there’s no redirect or similar involved.
I do clearly receive 2
www-authenticateresponse headers - so i don’t really get or grasp what the error in yaak is trying to tell me.Thanks for the help! Yaak wasn’t properly handling the multiple
www-authenticateheaders. Just closed a PR to fix that https://github.com/mountain-loop/yaak/pull/402I just tested with 2026.3.0-beta5 on Windows 2025 with IIS - it still does not work and there are no recorded traces, as we can see in the following screenshot:
In order to facilitate analysis - is it possible to collect a detailed trace of everything exchanged between Yaak and the web server ?
You can use something like Proxyman for that
I got better results with Fiddler; here is the only request/response sequence that is recorded so far; I hope it can help …
Hmm, that’s an odd one. Curl doesn’t sent content-length either though.