-
Notifications
You must be signed in to change notification settings - Fork 236
Description
Environment
Node version: 8.11.1
Npm version: 5.6.0
OS and version: Windows 10, Build 14393.2007
vsts-node-api version: 6.5.0
Issue Description
Trying to use this API to connect to a TFS 2015 instance with NTLM authentication always fails.
Expected behaviour
NTLM authentication should succeed and WebAPI.create() should return the connection data.
Actual behaviour
I have some test code in a function as:
let serverUrl = "http://myserver:8080/tfs/DefaultCollection"
consts client = require('vso-node-api')
let authHandler = client.getNtlmHandler("myusername", "mypassword")
let webApi = new client.WebApi(serverUrl, authHandler)
webApi.connect()
The connect() call fails after the server sends a 401 Unauthorized response with the WWW-Authenticate header. I dug into the source code and, please correct me if I'm wrong, I think the typed-rest-client
and the http-client
libraries embedded in the vso-node-api
package do not take into account the authentication handler being used for a request.
I traced the code flow for a connect()
call, and I found that there is only 1 call to the handler.prepareRequest() method in httpclient.js. None of the other methods of the handler such as canHandleAuthentication()
, handleAuthentication()
get called.
Furthermore, the NTLM authentication handler ntlm.ts does not make any additions to the request object in the prepareRequest()
method - which I think is correct as it's supposed to handle the authentication flow in the handleAuthentication()
method - only that never gets called.