Gitlab API:如何生成私有令牌

Posted

技术标签:

【中文标题】Gitlab API:如何生成私有令牌【英文标题】:Gitlab API: How to generate the private token 【发布时间】:2014-07-01 16:48:29 【问题描述】:

这是我尝试过的:

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

答案:

"message":"401 Unauthorized"

【问题讨论】:

【参考方案1】:

注意:从 GitLab 8.6.0 开始,此工作流程不再有效,因为默认密码已被删除。

更新日志:https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG#L205

我只是注意到这一点并提出了这个问题。把这个笔记留在这里,希望能节省一些时间。希望这是一个将被审查和恢复的决定。

讨论/问题:https://gitlab.com/gitlab-org/gitlab-ce/issues/1980

【讨论】:

Aral,我也遇到了这个问题。你有没有找到解决办法?【参考方案2】:

是这样的:

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

如果您的用户名或密码包含必须进行 urleencoded 的字符,则 Steven 指出的解决方案不起作用。 name=content 格式将对content 部分进行urlencode(name 部分必须进行urlencoded,但loginpassword 可以)。

要实际检索private_token,您可以将 curl 的输出通过管道传输到 jq 中,如下所示:

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

这样您就可以轻松地在 shell 脚本中使用它。

另外,正如 Steven 已经指出的那样,请改用 https,这样您的密码就不会以明文形式通过网络传输。

【讨论】:

【参考方案3】:

问题在于data-urlencode CURL 选项。由于它是 HTTP POST,因此您不需要对数据进行 URL 编码,实际上是将 & 编码为 & 并导致您的问题。请改用--data 选项。

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

另外,请小心通过普通 HTTP 发送凭据。它很容易被嗅到。

【讨论】:

对于阅读本文并想知道如何安全地执行此操作的任何人:curl 支持 HTTPS 很好,因此只需将协议替换为 https://(假设您的 gitlab 服务器支持此)。

以上是关于Gitlab API:如何生成私有令牌的主要内容,如果未能解决你的问题,请参考以下文章

下载GitLab私有存储库

LDAP 到 gitlab 用户同步 oauth 令牌

使用 Python 访问带有 GitLab API 的项目时出现 GitlabParsingError

查询gitlab访问令牌的访问权限

如何使用访问令牌从 Gitlab 推送和拉取 docker 图像

gitlab令牌过期