Come ottenere il token API per Jenkins


86

Sto cercando di usare l'api di riposo jenkins. Nelle istruzioni si dice che devo avere la chiave API. Ho guardato in tutte le pagine di configurazione per trovarlo. Come ottengo la chiave API per jenkins?


Se vuoi lo stesso a livello di programmazione, puoi dare un'occhiata a
Recupero

Risposte:


141

Da Jenkins 2.129 la configurazione del token API è cambiata :

Ora puoi avere più gettoni e nominarli. Possono essere revocati individualmente.

  1. Accedi a Jenkins.
  2. Fare clic sul nome (angolo in alto a destra).
  3. Fare clic su Configura (menu a sinistra).
  4. Usa il pulsante "Aggiungi nuovo token" per generarne uno nuovo, quindi assegnagli un nome.
  5. È necessario copiare il token quando lo si genera poiché non è possibile visualizzare il token in seguito.
  6. Revoca i vecchi token quando non sono più necessari.

Prima di Jenkins 2.129: mostra il token API come segue:

  1. Accedi a Jenkins.
  2. Fai clic sul tuo nome (angolo in alto a destra).
  3. Fare clic su Configura (menu a sinistra).
  4. Fare clic su Mostra token API .

Viene rivelato il token API.

È possibile modificare il token facendo clic sul pulsante Modifica token API .


2
c'è qualche API per ottenerlo?
Madhu Avinash

2
questo token sarà scaduto?
ndh103

Show API Tokennon è più valido a quanto pare.
Saikat

1
@MadhuAvinash Vedi la mia risposta qui sotto
RaGe

Cordiali saluti. Su Jenkins 2.150.1 il pulsante "Aggiungi nuovo token" non sembra apparire finché non esiste almeno un token. Si prega di controllare la risposta di @ RaGe per sapere come farlo senza l'interfaccia utente.
m__

18

Il modo non UI per eseguire questo post Jenkins 2.129 è:

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

che restituisce:

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

Pre Jenkins 2.129

curl http://<username>:<password>@<jenkins-url>/me/configure 

2
Devi includere la briciola CSRF ( wiki.jenkins.io/display/JENKINS/Remote+access+API ) nella tua richiesta di curl, altrimenti fallirà con 403: Forbidden.
MKesper

E se il nome utente è nome@dominio.com, abbiamo abilitato l'accesso singolo nel server jenkins
SibiCoder

2
@SibiCoder Prova a sostituire "@" con "% 40"
Tim Kist

2

Testato in Jenkins 2.225

Dopo aver fatto ricerche per diverse ore ho potuto trovare la risposta:

Il token API viene utilizzato al posto del token CSFR. Tuttavia, cosa succede se si desidera eseguire l'autenticazione da qualsiasi altro client (POSTMAN, CLI. Curl, ecc.).

Per prima cosa devi ottenere un token CSFR e salvare le informazioni in un cookie con --cookie-jar

  • RICHIESTA

curl -s --cookie-jar / tmp / cookies -u nome utente: password http: // localhost: 8080 / crumbIssuer / api / json

  • RISPOSTA

{"_class": "hudson.security.csrf.DefaultCrumbIssuer", "crumb": "bc92944100d12780cfc251c9255f3f323a475562b4ee0d8b9cc6e4121f50a450", "crumbRequestkins-Field": "

Quindi possiamo leggere il cookie con --cookiee generare il nuovo token:

  • RICHIESTA

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

  • RISPOSTA

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.