web-dev-qa-db-fra.com

API Gitlab: comment générer le jeton privé

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"}

14
rodvlopes

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é.

16
Steven V

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.

9
josch

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

1
Aral Balkan