Gáb*_*kos 16 git mercurial oauth bitbucket
我按照这个文档从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授权?
Psy*_*tix 25
我在设置 - >访问管理(侧边栏) - >应用程序密码下使用了我从Bitbucket Cpanel创建的应用程序密码.在我这样做之后,我使用我的用户名和新的应用密码克隆了回购,如下所示:
HTTPS:// [your_user_name]:[app_password] @ bitbucket.org/[your_user_name]/[repo_name]的.git
Von*_*onC 11
我们最近引入了OAuth 2,并且还添加了将它们用作HTTP Basic Auth凭据的功能.
使用访问令牌克隆存储库
由于附加组件无法上传自己的SSH密钥以进行克隆,因此可以将访问令牌用作基本HTTP身份验证凭据,以通过HTTPS安全克隆.
Run Code Online (Sandbox Code Playgroud)git clone https://x-token-auth:{access_token}@bitbucket.org/user/repo.git需要使用文字字符串
x-token-auth作为用户名的替代.我们的过程类似于GitHub,但略有不同:区别在于GitHub将实际令牌放在用户名字段中.
根据nick graziano 的评论中的建议,在" Bitbucket Cloud上的OAuth "中查看更多内容.
Eri*_*jst 10
首先:只有OAuth 2令牌才能用于克隆回购
虽然从这个页面不清楚,我看到人们尝试使用OAuth 1访问令牌.不幸的是,Git和Mercurial不支持OAuth 1,因此不可能以这种方式克隆repos.
这是因为OAuth 1要求对请求进行唯一签名.令牌本身只是git和hg不支持的加密签名过程的输入变量之一.
现在我们确实最近添加了对OAuth 2的支持,尽管它的名称是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: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.
Run Code Online (Sandbox Code Playgroud)
现在请注意,OAuth 2令牌会在一小时后到期.之后他们将停止工作.根据您获取访问令牌的方式,您可能拥有刷新令牌.您可以使用此刷新令牌在尝试克隆之前立即发出新的访问令牌,以避免过期.
使用令牌操作Bitbucket存储库:
首先,在bitbucket帐户设置的访问管理部分创建"Oauth".这给你一个"钥匙"和一个"秘密".你做到了这一点.
现在使用这些Key和Secret,你会要求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
Run Code Online (Sandbox Code Playgroud)
或者,我的http请求是这样的(在节点中使用superagent)和我的Content-Type设置application/x-www-form-urlencoded你可以使用postman:
request.post("https://yourKeyHere:yourSecretHere@bitbucket.org/site/oauth2/ access_token").send('grant_type=client_credentials');`
Run Code Online (Sandbox Code Playgroud)
结果是这样的:
{
"access_token": "blah blah blah HXAhrfr8YeIqGTpkyFio=",
"scopes": "pipeline snippet issue pullrequest project team account",
"expires_in": 3600,
"refresh_token": "hsadgsadvkQ",
"token_type": "bearer"
}
Run Code Online (Sandbox Code Playgroud)现在你有了"access_token",用它克隆一个私人仓库.但你的回购的网址应该是这样的(保持括号周围的括号):
https://x-token-auth:{tokenHere}@bitbucket.org/yourRepoOwnerHere/RepoNameHere.git
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
22479 次 |
| 最近记录: |