So erhalten Sie das API-Token für Jenkins

85

Ich versuche die Jenkins Rest API zu verwenden. In der Anleitung steht, dass ich den API-Schlüssel haben muss. Ich habe alle Konfigurationsseiten durchgesehen, um sie zu finden. Wie bekomme ich den API-Schlüssel für Jenkins?

Luke101
quelle
Wenn Sie dasselbe programmgesteuert möchten, können Sie einen Blick auf das programmgesteuerte Abrufen des Jenkins-REST-API-Tokens
werfen

Antworten:

138

Seit Jenkins 2.129 hat sich die API-Token-Konfiguration geändert :

Sie können jetzt mehrere Token haben und diese benennen. Sie können einzeln widerrufen werden.

  1. Melden Sie sich bei Jenkins an.
  2. Klicken Sie auf Ihren Namen (obere rechte Ecke).
  3. Klicken Sie auf Konfigurieren (Menü auf der linken Seite).
  4. Verwenden Sie die Schaltfläche "Neues Token hinzufügen", um ein neues zu generieren, und benennen Sie es dann.
  5. Sie müssen das Token kopieren, wenn Sie es generieren, da Sie das Token anschließend nicht mehr anzeigen können.
  6. Widerrufe alte Token, wenn sie nicht mehr benötigt werden.

Vor Jenkins 2.129: Zeigen Sie das API-Token wie folgt an:

  1. Melden Sie sich bei Jenkins an.
  2. Klicken Sie auf Ihren Namen (obere rechte Ecke).
  3. Klicken Sie auf Konfigurieren (Menü auf der linken Seite).
  4. Klicken Sie auf API-Token anzeigen .

Das API-Token wird angezeigt.

Sie können das Token ändern, indem Sie auf die Schaltfläche API-Token ändern klicken .

Brian Walker
quelle
2
Gibt es eine API, um das zu bekommen?
Madhu Avinash
2
Wird dieser Token abgelaufen sein?
ndh103
Show API Tokenist anscheinend nicht mehr gültig.
Saikat
1
@ MadhuAvinash Siehe meine Antwort unten
RaGe
Zu Ihrer Information. In Jenkins 2.150.1 scheint die Schaltfläche "Neues Token hinzufügen" erst zu erscheinen, wenn mindestens ein Token vorhanden ist. Bitte überprüfen Sie die Antwort von @ RaGe, wie dies ohne die Benutzeroberfläche möglich ist.
m__
17

Die Nicht-UI-Methode für diesen Beitrag Jenkins 2.129 lautet:

curl 'https://<jenkinsURL>/me/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken' \
--data 'newTokenName=foo' \
--user username:Password

was zurückgibt:

{
  "status": "ok",
  "data": {
    "tokenName": "foo",
    "tokenUuid": "<uuid>",
    "tokenValue": "<redacted>"
  }
}

Pre Jenkins 2.129

curl http://<username>:<password>@<jenkins-url>/me/configure 
Wut
quelle
2
Sie müssen die CSRF-Krume ( wiki.jenkins.io/display/JENKINS/Remote+access+API ) in Ihre Curl-Anfrage aufnehmen, sonst schlägt sie mit 403: Forbidden fehl.
MKesper
Was ist, wenn der Benutzername [email protected] lautet? Wir haben die einmalige Anmeldung auf dem Jenkins-Server
aktiviert
2
@SibiCoder Versuchen Sie, '@' durch '% 40' zu ersetzen
Tim Kist
0

Getestet in Jenkins 2.225

Nachdem ich einige Stunden recherchiert hatte, konnte ich die Antwort finden:

Das Api-Token wird anstelle des CSFR-Tokens verwendet. Was passiert jedoch, wenn Sie die Authentifizierung von einem anderen Client (POSTMAN, CLI. Curl usw.) durchführen möchten?

Zuerst müssen Sie ein CSFR-Token erhalten und die Informationen in einem Cookie mit speichern --cookie-jar

  • ANFRAGE

curl -s --cookie-jar / tmp / cookies -u Benutzername: Passwort http: // localhost: 8080 / crumbIssuer / api / json

  • ANTWORT

{"_class": "hudson.security.csrf.DefaultCrumbIssuer", "crumb": "bc92944100d12780cfc251c9255f3f323a475562b4ee0d8b9cc6e4121f50a450", "crumbRequestField"

Dann können wir den Cookie mit lesen --cookieund den neuen Token generieren:

  • ANFRAGE

curl -X POST -H 'Jenkins-Crumb: your_crumb_token_generated_above' --cookie / tmp / cookies http: // localhost: 8080 / me / deskriptorByName / jenkins.security.ApiTokenProperty / generateNewToken? newTokenName = \ your_token_name -u Benutzername:

  • ANTWORT

{"status": "ok", "data": {"tokenName": "my android token", "tokenUuid": "c510e26c-b2e8-4021-bf79-81d1e4c112af", "tokenValue": "11a2a0c91913d1391d8e8c815"

Carlos Leonardo Camilo Vargas
quelle