web-dev-qa-db-ja.com

Gitlab API:プライベートトークンを生成する方法

これは私が試したものです:

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

回答:

{"message":"401 Unauthorized"}

14
rodvlopes

問題はdata-urlencode CURLオプション。これはHTTPなので、POSTでデータをURLエンコードする必要はなく、実際には&から&と問題を引き起こしています。代わりに--dataオプション。

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

また、プレーンHTTP経由で資格情報を送信する場合は注意してください。簡単に盗聴できます。

17
Steven V

こうやって:

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

ユーザー名またはパスワードにurleencodeする必要のある文字が含まれている場合、Stevenが指摘した解決策は機能しません。 name=content形式はcontent部分をurlencodeします(name部分はurlencodeする必要がありますが、loginpasswordは問題ありません)。

実際にprivate_tokenを取得するには、次のようにcurlの出力をjqにパイプできます。

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

これにより、シェルスクリプトで簡単に使用できます。

また、スティーブンがすでに指摘したように、パスワードがクリアテキストで送信されないように、代わりにhttpsを使用してください。

9
josch

注:デフォルトのパスワードが削除されているため、このワークフローはGitLab 8.6.0以降では機能しません。

変更ログ: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG#L205

私はこれに気づいただけで問題を提起しました。このメモをここに残して、誰か他の人の時間を節約できればと思います。うまくいけば、これはレビューされ、元に戻される決定です。

ディスカッション/問題: https://gitlab.com/gitlab-org/gitlab-ce/issues/198

2
Aral Balkan