私はこのドキュメントに従って、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
私の質問は、bitbucket(Mercurial/git)でこの種のhttp認証をどのように使用できるかです。
これは BitBucketページの言及 :
最近、OAuth 2を導入し、それらを HTTP Basic Authクレデンシャル として使用する機能も追加しました。
アクセストークンを使用したリポジトリの複製
アドオンは複製に使用する独自のSSHキーをアップロードできないため、アクセストークンを基本的なHTTP認証の資格情報として使用して、HTTPS経由で安全に複製できます。
git clone https://x-token-auth:{access_token}@bitbucket.org/user/repo.git
リテラル文字列
x-token-auth
ユーザー名の代わりとして必要です。私たちのプロセスはGitHubに似ていますが、少し異なります。違いは、GitHubが実際のトークンをユーザー名フィールドに入力することです。
詳しくは、「 Bitbucket Cloud上のOAuth 」を参照してください コメント内nick graziano による。
Bitbucket Cpanelで[設定]-> [アクセス管理(サイドバー)]-> [アプリパスワード]から作成したアプリパスワードを使用しました。これを行った後、ユーザー名と新しいアプリパスワードを使用して、次のようにリポジトリを複製しました。
https://[your_user_name]:[app_password]@bitbucket.org/[your_user_name]/[repo_name].git
まず最初にOAuth 2つのトークンを使用してリポジトリのクローンを作成できます
このページからはわかりませんが、OAuth 1アクセストークンを使用しようとする人がいます。残念ながらGitとMercurialはOAuth 1をサポートしていないため、そのようにリポジトリを複製することはできません。
これは、OAuth 1は、リクエストに一意の署名が必要であるためです。トークン自体は、gitおよびhgがサポートしていない暗号署名プロセスの入力変数の1つにすぎません。
現在、実際にOAuth 2のサポートを追加しました。これは、その名前にもかかわらず、非常に異なるプロトコルであり、暗号化署名が含まれていません。その結果、OAuth = 2つのトークンを使用して、https経由でクローンを作成できます。
これは、新しいOAuth 2アクセス/ベアラートークンを作成し、それを使用して私のプライベートリポジトリの1つを複製するための私のダンプです。
$ 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:JU5dAtlMD30BisLpDkIap7T18Ry9v6p0Xif4owkQUyen_rLx5_B3PjjeqhLhpde0ezR1wyGLeqYE2HA49A==@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つのトークンが1時間で期限切れになります。その後、トークンは機能しなくなります。アクセストークンの取得方法によっては、更新トークンがある場合があります。この更新トークンを使用できます期限切れを回避するために、クローンを作成する直前に新しいアクセストークンを発行する。
tokenでBitbucketリポジトリを操作するには:
まず、bitbucketアカウント設定のアクセス管理セクションで「Oauth」を作成します。これはあなたに「鍵」と「秘密」を与えます。これで完了です。
これらのキーとシークレットを使用して、Bitbucketにトークンを要求します。私の場合、https://bitbucket.org/site/oauth2/access_token
にhttpリクエストを送信しました。 Curlまたは次のようないくつかのAjaxライブラリでそれを行うことができます。
curl -X POST -u "yourKeyHere:yourSecretHere" https://bitbucket.org/site/oauth2/access_token -d grant_type=client_credentials
または、私のhttpリクエストは次のようになり(ノードでスーパーエージェントを使用)、Content-Type
をapplication/x-www-form-urlencoded
に設定すると、postmanを使用できます。
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