Подтвердить что ты не робот

Как манипулировать репозиторием Bitbucket с токеном?

Я следил за этой документацией, чтобы получить значение токена и токен из битбакет:
https://confluence.atlassian.com/display/BITBUCKET/OAuth+on+Bitbucket

После этого я хочу нажать/вытащить на заданный репо, используя этот токен.

В Github я могу использовать токен следующим образом: https://help.github.com/articles/git-automation-with-oauth-tokens#step-2-clone-a-repository

Мой вопрос в том, как я могу использовать этот вид авторизации http в битбакете (mercurial/ git)?

4b9b3361

Ответ 1

Эта Страница BitBucket упоминается:

Недавно мы представили OAuth 2, а также добавили возможность использовать их в качестве HTTP Basic Auth credentials.

Клонирование репозитория с помощью токена доступа

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

git clone https://x-token-auth:{access_token}@bitbucket.org/user/repo.git

Требуется буквальная строка x-token-auth в качестве замены имени пользователя.

Наш процесс похож на GitHub, но немного отличается: разница в GitHub ставит фактический токен в поле имени пользователя.

Подробнее в разделе OAuth на облаке Bitbucket ", как предложено в комментариях nick graziano.

Ответ 2

Я использовал пароль приложения, который я создал из панели Bitbucket Cpanel, в Настройки → Управление доступом (боковая панель) → Пароли приложения. После этого я клонировал репозиторий, используя свое имя пользователя и новый пароль приложения следующим образом:

https://[your_user_name]:[app_password]@bitbucket.org/[your_user_name]/[repo_name].git

Ответ 3

Прежде всего: только токены OAuth 2 могут использоваться для клонирования репозиториев

Пока неясно с этой страницы, я видел, как люди пытались использовать токены доступа OAuth 1. К сожалению, Git и Mercurial не поддерживают OAuth 1, и поэтому невозможно клонировать репозиции таким образом.

Это связано с тем, что OAuth 1 требует уникальной подписки на запросы. Сам токен является лишь одной из входных переменных для процесса криптографического подписания, который Git и hg не поддерживают.

Теперь мы действительно недавно добавили поддержку OAuth 2, которая, несмотря на свое имя, является совсем другим протоколом и не включает криптографическое подписание. В результате токены OAuth 2 могут быть использованы для клонирования по https.

Здесь дамп для меня, создающий новый токен доступа/токена OAuth 2 и использующий его для клонирования одного из моих личных репозиториев:

$ curl https://bitbucket.org/site/oauth2/access_token \
  -d grant_type=client_credentials \
  -u dqN7QFLwJEcHsHadYw:pzvZG25WEDqbm9aeUVRHtQRHgTRgDr9t
{
  "access_token": "He1rBW1eYAzmT3ePJcvYDtkIcF1Pb1izZHo8oqpKMEL5ivsku71qkjfumVgR2bWsCiRM7XeEmbVffxU92w==",
  "scopes": "repository email",
  "expires_in": 3600,
  "refresh_token": "pfcnxSpXNPAeTcYhcQ",
  "token_type": "bearer"
}
$ git clone "https://x-token-auth:JU5dAtlMD30BisLpDkIap[email protected]bitbucket.org/evzijst/crypt"
Cloning into 'crypt'...
remote: Counting objects: 26, done.
remote: Compressing objects: 100% (25/25), done.
remote: Total 26 (delta 8), reused 0 (delta 0)
Unpacking objects: 100% (26/26), done.
Checking connectivity... done.

Теперь имейте в виду, что токены OAuth 2 истекают через час. После этого они перестанут работать. В зависимости от того, как вы получили токен доступа, у вас может быть токен обновления. Вы можете использовать этот токен обновления, чтобы выпустить новый токен доступа непосредственно перед попыткой клонирования, чтобы избежать истечения срока действия.

Ответ 4

Чтобы управлять репозиторием Bitbucket с помощью токена:

  • Сначала вы создаете "Oauth" в разделе управления доступом в настройках учетной записи Bitbucket. Это дает вам "Ключ" и "Секрет". Вы сделали этот бит.

  • Теперь, используя этот ключ и секрет, вы спрашиваете Bitbucket для токена. В моем случае я сделал http-запрос https://bitbucket.org/site/oauth2/access_token. Я мог бы сделать это с помощью Curl или некоторой библиотеки Ajax следующим образом:

    curl -X POST -u "yourKeyHere:yourSecretHere"  https://bitbucket.org/site/oauth2/access_token -d  grant_type=client_credentials
    

    в качестве альтернативы мой HTTP-запрос был таким (с использованием суперагента в node), с моим Content-Type, установленным в application/x-www-form-urlencoded, вы можете использовать почтальон:

    request.post("https://yourKeyHere:[email protected]/site/oauth2/      access_token").send('grant_type=client_credentials');`
    

    результат выглядит следующим образом:

    {
       "access_token": "blah blah blah HXAhrfr8YeIqGTpkyFio=",
       "scopes": "pipeline snippet issue pullrequest project team account",
       "expires_in": 3600,
       "refresh_token": "hsadgsadvkQ",
       "token_type": "bearer"
    }
    
  • Теперь, когда у вас есть "access_token", клонируйте с ним частное репо. Но URL-адрес вашего репо должен быть таким (держите скобку вокруг токена):

    https://x-token-auth:{tokenHere}@bitbucket.org/yourRepoOwnerHere/RepoNameHere.git