API Gitlab: как сгенерировать закрытый токен

Это то, что я пробовал:

curl http://git.ep.petrobras.com.br/api/v3/session --data-urlencode 'login=myUser&password=myPass'

Ответ:

{"message":"401 Unauthorized"}

Ответ 1

Проблема заключается в опции data-urlencode CURL. Поскольку это HTTP POST, вам не нужно кодировать данные URL и на самом деле кодировать & в & и вызывать проблему. Вместо этого используйте параметр --data.

curl http://git.ep.petrobras.com.br/api/v3/session --data 'login=myUser&password=myPass'

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

Ответ 2

Вот как это сделать:

$ curl http://git.ep.petrobras.com.br/api/v3/session/ --data-urlencode 'login=myUser' --data-urlencode 'password=myPass'

Решение, указанное Стивеном, не работает, если ваше имя пользователя или пароль содержат символы, которые должны быть указаны. Формат name=content будет urlencode в части content (часть name должна быть указана, но login и password в порядке).

Чтобы получить private_token, вы можете вывести вывод curl в jq следующим образом:

$ curl [as above] | jq --raw-output .private_token
x_the_private_token_value_x

Таким образом, вы можете легко использовать его в оболочке script.

Кроме того, как уже указывал Стивен, вместо этого используйте https, чтобы ваш пароль не был передан в виде чистого текста через провод.

Ответ 3

Примечание: этот рабочий процесс больше не работает с GitLab 8.6.0 по мере удаления пароля по умолчанию.

Список изменений: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG#L205

Я только заметил это и поднял вопрос. Оставляя эту заметку здесь, надеюсь, кого-нибудь еще кого-нибудь спасут. Надеюсь, это решение, которое будет рассмотрено и отменено.

Обсуждение/выпуск: https://gitlab.com/gitlab-org/gitlab-ce/issues/1980