Как аутентифицировать VSTS API-интерфейсы PAT с использованием JS - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь создать небольшой сервис, который будет возвращать элементы из Azure-DevOps 2019. Для этого я пытаюсь аутентифицироваться с помощью токена личного доступа.

Пробовал разные способы, включая преобразование PAT в Base64 (с моим именем пользователя и без него). По какой-то причине, кажется, ничего не работает. Я закончил с этим:

var myPAT ="";
var myOrg = "";

var request = new XMLHttpRequest;
request.open("GET","https://dev.azure.com/"+ myOrg + "/_apis/projects?api-version=2.0", true);
var b = "Bearer [myPAT]";
request.setRequestHeader("Authorization", b);

request.onload = function() {
  var data = JSON.parse(JSON.stringify(this.response));
  console.log(data);
}
request.send()

Что бы я ни пытался, я не смог пройти аутентификацию.

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Итак, благодаря Андре я нашел проблему.и именно этой строки не хватало (фактически, ":" была пропущенная часть)

var base64PAT = btoa(":" +myPAT);
0 голосов
/ 27 марта 2019

В соответствии с официальной документацией вы используете базовую авторизацию, когда хотите передать свой PAT в заголовок:

Если вы хотите предоставить личный токен доступа через HTTP заголовок, вы должны сначала преобразовать его в строку Base64. Результирующий Строка может быть предоставлена ​​в виде заголовка HTTP в формате:

 Authorization: Basic BASE64PATSTRING

Пример кода:

var myPAT ="INSERT YOUR PAT HERE";
var myOrg = "INSERT YOUR ORG HERE";
var base64Pat = btoa(":"+myPAT);
var request = new XMLHttpRequest;
request.open("GET","https://dev.azure.com/"+ myOrg + "/_apis/projects?api-version=2.0", true);
var b = "Basic " + base64Pat;
request.setRequestHeader("Authorization", b);

request.onload = function() {
  var data = JSON.parse(JSON.stringify(this.response));
  console.log(data);
}
request.send();

Обязательно вставляйте «:» перед вашим патом, когда вы конвертируете его в base64. Иначе не будет работать

...