Cómo obtener el token de API para Jenkins


Respuestas:


139

Desde Jenkins 2.129, la configuración del token de API ha cambiado :

Ahora puede tener varios tokens y nombrarlos. Pueden revocarse individualmente.

  1. Inicie sesión en Jenkins.
  2. Haga clic en su nombre (esquina superior derecha).
  3. Haga clic en Configurar (menú del lado izquierdo).
  4. Use el botón "Agregar token nuevo" para generar uno nuevo y luego asígnele un nombre.
  5. Debe copiar el token cuando lo genere, ya que no podrá verlo posteriormente.
  6. Revoca las fichas antiguas cuando ya no las necesites.

Antes de Jenkins 2.129: muestre el token de API de la siguiente manera:

  1. Inicie sesión en Jenkins.
  2. Haga clic en su nombre (esquina superior derecha).
  3. Haga clic en Configurar (menú del lado izquierdo).
  4. Haga clic en Mostrar token de API .

Se revela el token de API.

Puede cambiar el token haciendo clic en el botón Cambiar token de API .


2
¿Hay alguna API para conseguir eso?
Madhu Avinash

2
¿Caducará este token?
ndh103

Show API Tokenya no es válido, parece.
Saikat

1
@MadhuAvinash Vea mi respuesta a continuación
RaGe

FYI. En Jenkins 2.150.1, el botón "Agregar nuevo token" no parece aparecer hasta que exista al menos un token. Consulte la respuesta de @ RaGe para saber cómo hacerlo sin la interfaz de usuario.
m__

17

La forma sin interfaz de usuario de hacer esta publicación Jenkins 2.129 es:

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

que devuelve:

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

Pre Jenkins 2.129

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

2
Debe incluir la miga de CSRF ( wiki.jenkins.io/display/JENKINS/Remote+access+API ) en su solicitud de curl, de lo contrario fallará con 403: Forbidden.
MKesper

¿Qué pasa si el nombre de usuario es name@domain.com, hemos habilitado el inicio de sesión único en el servidor jenkins
SibiCoder

2
@SibiCoder Intente reemplazar '@' con '% 40'
Tim Kist

1

Probado en Jenkins 2.225

Después de investigar durante varias horas pude encontrar la respuesta:

Se usa Api Token en lugar del token CSFR. Sin embargo, ¿qué sucede si desea realizar la autenticación desde cualquier otro cliente (POSTMAN, CLI. Curl, etc)?

Primero debe obtener un token CSFR y guardar la información en una cookie con --cookie-jar

  • SOLICITUD

curl -s --cookie-jar / tmp / cookies -u nombre de usuario: contraseña http: // localhost: 8080 / crumbIssuer / api / json

  • RESPUESTA

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

Luego podemos leer la cookie --cookiey generar el nuevo token:

  • SOLICITUD

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 nombre de usuario: contraseña

  • RESPUESTA

{"status": "ok", "data": {"tokenName": "mi token de Android", "tokenUuid": "c510e26c-b2e8-4021-bf79-81d1e4c112af", "tokenValue": "11a2a0c91913d1391d8e814cb155ca7}}

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.