Как пройти аутентификацию в DevOps API с помощью php - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь получить доступ к API-интерфейсу REST Azure DevOps через php / curl и токен личного доступа, но у меня возникают проблемы с процессом аутентификации.

В документации говорится, что pat должен быть преобразован в base64, а затем добавлен в заголовок HTTP, однако я не смог правильно сделать это. Вот что я пробовал:

function GetBuilds($url, $token) {  
  $ci = curl_init();

  curl_setopt($ci, CURLOPT_URL, $url);
  curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ci, CURLOPT_TIMEOUT, 30);
  curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);
  curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, false);
  curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($ci, CURLOPT_HTTPHEADER, array(
    "content-type: text/html",
    "content-length: 0",
    "Authorization: Basic ".base64_encode($token)   // Several variants have been tried.
    )
  );

  $buffer = curl_exec($ci); 
  curl_close($ci);

  return $buffer;
};

$ url - это ссылка на API DevOps, которая работает при вызове из браузера (после входа в систему), однако при вызове страницы с этой функцией возвращается строка «Объект перенесен сюда». со ссылкой "здесь", ведущей на страницу входа в систему Microsoft.

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Комментарий Даниэля Манна был решением (спасибо!), Хотя я не могу прямо пометить его как таковой. Изменение строки «Авторизация» на это:

"Authorization: Basic ".base64_encode(":".$token)

успешно авторизовал запрос.

1 голос
/ 15 апреля 2019

Уверен, вам нужно преобразовать это в base64:

user@domain.com:token

не только токен. user@domain.com - пользователь, выдавший токен

...