ntlm tfs res api响应总是" 401 - 未经授权:由于凭证无效而拒绝访问"

时间:2018-01-31 14:15:29

标签: node.js express ntlm

我尝试从tfs api url获取所有项目名称。为此,我使用node.js ntlm包。以下是我的代码。

function getTFSProjectNames(credentials) {
        return new Promise(function (resolve, reject) {
            var ntlm = require('ntlm');
            var ntlmrequest = require('request').defaults({
                agentClass: require('agentkeepalive').HttpsAgent
            });
            var projectNames = [];
            var url = "https://{instance}/tfs/DefaultCollection/_apis/projects?api-version=1.0"
                , domain = 'domain'
                , hostname = 'hostname';

           var testOption = {
                             url:url,
                             headers: {
                              'Authorization': ntlm.challengeHeader(hostname, domain)
                            },
                            proxy: 'server proxy',
                            timeout: 10000,
                            followRedirect: true,
                            maxRedirects: 10        
                          }

            ntlmrequest(testOption , function (err, ntlmres) {
                if (err && ntlmres == undefined)
                    resolve({ 'Projects': projectNames });
                else {
                    var options = {
                        method: 'get',
                        json: true,
                        url: url,
                        headers: {
                            'Authorization': ntlm.responseHeader(ntlmres, url, domain, credentials.username, credentials.password),
                            'Content-Type': 'application/json'
                        },
                       proxy: 'server proxy',
                       timeout: 10000,
                       followRedirect: true,
                       maxRedirects: 10 
                    }
                    ntlmrequest(options, function (err, ntlmres, body) {
                        if (err)
                            return next(err)

                        if (ntlmres != undefined && ntlmres.body != undefined && ntlmres.body.value != undefined) {
                            var projectNames = ntlmres.body.value.map(function (item) {
                                return item.name;
                            })
                        }
                        resolve({ 'Projects': projectNames });
                    });
                }
            });
        });
    }

即使是正确的凭据,它的响应始终为 401 - 未经授权:由于凭据无效而拒绝访问。这是一个服务器错误。我无法理解,为什么每次都会发生这种情况。请帮我解决这个问题。

0 个答案:

没有答案