C'est ce que j'ai essayé:
curl http://git.ep.petrobras.com.br/api/v3/session --data-urlencode 'login=myUser&password=myPass'
Réponse:
{"message":"401 Unauthorized"}
Le problème est l'option data-urlencode
CURL. Comme il s'agit d'un HTTP POST, vous n'avez pas besoin de coder les données à l'aide d'une URL. Vous codez en fait le &
en &
et vous causez le problème. Utilisez plutôt l'option --data
.
curl http://git.ep.petrobras.com.br/api/v3/session --data 'login=myUser&password=myPass'
Veillez également à envoyer les informations d'identification via HTTP simple. Il pourrait être facilement reniflé.
C'est ainsi:
$ curl http://git.ep.petrobras.com.br/api/v3/session/ --data-urlencode 'login=myUser' --data-urlencode 'password=myPass'
La solution indiquée par Steven ne fonctionne pas si votre nom d'utilisateur ou votre mot de passe contient des caractères qui doivent être codés avec l'URL. Le format name=content
va coder url la partie content
(la partie name
doit être codée en url mais login
et password
conviennent).
Pour récupérer réellement le private_token
, vous pouvez diriger la sortie de curl dans jq comme ceci:
$ curl [as above] | jq --raw-output .private_token
x_the_private_token_value_x
De cette façon, vous pouvez facilement l'utiliser dans un script Shell.
En outre, comme Steven l'a déjà souligné, utilisez plutôt https afin que votre mot de passe ne soit pas transmis en texte clair sur le réseau.
Remarque: ce flux de travail ne fonctionne plus à partir de GitLab 8.6.0 car le mot de passe par défaut a été supprimé.
Changelog: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG#L205
Je viens juste de remarquer cela et de soulever le problème. Laissant cette note ici pour sauver, espérons-le, quelqu'un d'autre quelque temps. Espérons que cette décision sera revue et annulée.
Discussion/numéro: https://gitlab.com/gitlab-org/gitlab-ce/issues/1980