Как настроить авторизацию в git с помощью PAT для Azure Devops

Особенность PAT авторизации через PAT в том, что она работает поверх Basic аутентификации, используя пустое имя пользователя. Git не воспринимает авторизацию через Basic с пустым логином, потому нам нужно обходное решение.

Технически git позволяет специальной настройкой передавать дополнительные http заголовки, в случае если используется протокол http. Эту настройку можно:

  1. Добавить на любой уровень настроек системные, глобальные настройки репозитория, я предпочитаю хранить такие настройки в каждом репозитории индивидуально

  2. Передать в команду двумя способами (только для одноразового применения или для постоянного сохранения настройки). это работает с командой clone

Потому готовим заголовок авторизации для http:

  1. Генерирует PAT стандартным способом у меня, например, это будет kdki7svwyzw25av6hnskkq77bow3vx7ed7l3xsobzr56giujayoq

  2. Теперь добавляем в начало строки двоеточие и кодируем от получившейся строки base64 (можно воспользоваться публичным сервисом), если требуется выбрать кодировку, выберите utf-8. что получилось у меня: Omtka2k3c3Z3eXp3MjVhdjZobnNra3E3N2JvdzN2eDdlZDdsM3hzb2J6cjU2Z2l1amF5b3E=

  3. В начало строки добавляем (с пробелом на конце) Authorization: Basic

  4. Готово!

В результате у нас должна получиться такая строка:

Authorization: Basic Omtka2k3c3Z3eXp3MjVhdjZobnNra3E3N2JvdzN2eDdlZDdsM3hzb2J6cjU2Z2l1amF5b3E=

Теперь мы можем использовать эту строку в командах git:

действие команда
клонируем без сохранения настройки git -c http.extraHeader="Authorization: Basic Omtka2k3c3Z3eXp3MjVhdjZobnNra3E3N2JvdzN2eDdlZDdsM3hzb2J6cjU2Z2l1amF5b3E=" clone https://ado.uri/repo
клонируем, сохраняя настройку git clone https://ado.uri/repo -c http.extraHeader="Authorization: Basic Omtka2k3c3Z3eXp3MjVhdjZobnNra3E3N2JvdzN2eDdlZDdsM3hzb2J6cjU2Z2l1amF5b3E="
вытягиваем изменения без сохранения настройки git -c http.extraHeader="Authorization: Basic Omtka2k3c3Z3eXp3MjVhdjZobnNra3E3N2JvdzN2eDdlZDdsM3hzb2J6cjU2Z2l1amF5b3E=" pull
вытягиваем изменения, сохраняя настройку git pull -c http.extraHeader="Authorization: Basic Omtka2k3c3Z3eXp3MjVhdjZobnNra3E3N2JvdzN2eDdlZDdsM3hzb2J6cjU2Z2l1amF5b3E="

Альтернативно, если репозиторий уже скачан можно добавить эту опцию руками в файл .git/config текст настройки в таком случае будет выглядеть так:

[http]
	extraheader = Authorization: Basic Omtka2k3c3Z3eXp3MjVhdjZobnNra3E3N2JvdzN2eDdlZDdsM3hzb2J6cjU2Z2l1amF5b3E=

Будьте аккуратны - не задублируйте секцию http если она уже существует


242 Words

2022-05-12 07:49 +0300