Полный отказ от ответственности: я никогда раньше не работал с Microsoft NTLM.
Я пробовал около 30 различных способов доступа к API 7Pace timetracker в нашем локальном экземпляре TFS. Я знаю, что это работает, если я получаю доступ к URI непосредственно в Chrome, он запрашивает у меня логин AD и быстро предоставляет мне все запрошенные данные. То же самое для Почтальона, но есть вкладка аутентификации для NTLM заранее.
Почтальон предлагает это для Node.js, используя запрос:
var request = require("request");
var options = {
method: 'GET',
url: 'http://tfs2:8090/api/FlexPOS%20APS/odata/TimeExport%28StartDate=%272018-11-14%27,EndDate=%272018-11-14%27%20,PopulateTopParentColumns=null,GroupTimeByDateByUser=null,IncludeBillable=null%29',
headers: {
'cache-control': 'no-cache',
Authorization: 'NTLM NOTTHEREALTOKENKJASDKLHWKLLASBEDBSDAOBAW'
}
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
Это ничего не возвращает. Обратите внимание на заголовок авторизации. Я протестировал несколько разных вариантов похожих. Следующим моим предположением было сделать запрос через Chrome, затем прослушать его с помощью Tellerik Fiddler и попытаться скопировать заголовки. Я тоже это сделал, но безрезультатно. В итоге я получаю результат, очень похожий на приведенный выше, за исключением того, что в chrome используются переговоры:
Есть идеи, как это сделать? Может быть, другие варианты отладки?