authentication - Jenkins: ''Trigger Builds Remotely'' con? Token no funciona cuando se usa la estrategia de autorizaciĆ³n de Matrix
(2)
Tengo un problema al activar compilaciones en Jenkins con la autenticación habilitada y me pregunto si alguien tiene ideas.
Tengo la seguridad global configurada para usar LDAP con la "Estrategia de autorización de matriz basada en proyectos" habilitada. El usuario "Anónimo" tiene el privilegio "Trabajo> Crear", y ningún otro privilegio (en particular, el usuario "Anónimo" NO tiene el privilegio "General> Leer", ya que no quiero que todos puedan ver el lista de trabajos y otra información general).
Quiero que un script automatizado pueda desencadenar una compilación utilizando la función "Trigger Builds Remotely", donde especifico un valor de ?token=[token]
en el URL y se debe pasar por alto la autenticación estándar, siempre que el [token]
el valor coincide con el que configuré en la página Configurar del trabajo. El objetivo es NO tener que proporcionar un nombre de usuario / contraseña regular en la solicitud, sino simplemente proporcionar el token para este trabajo específico.
La documentación parece indicar que esto debería funcionar:
https://wiki.jenkins-ci.org/display/JENKINS/Quick+and+Simple+Security
Entonces, específicamente, espero que esta solicitud HTTP funcione:
curl -i https://jenkinsHost/job/ProjectName/build?token=test
Pero entiendo:
[~]$ curl -i https://jenkinsHost/job/ProjectName/build?token=test
HTTP/1.1 403 Forbidden
Date: Sat, 27 Apr 2013 23:17:03 GMT
Server: Winstone Servlet Engine v0.9.10
Content-Type: text/html;charset=UTF-8
Content-Length: 629
X-Powered-By: Servlet/2.5 (Winstone/0.9.10)
Set-Cookie: JSESSIONID.e9bc4765=e1f0a30b9f04b3740bae527a7822b2d5; Path=/; HttpOnly
Connection: close
<html><head><meta http-equiv=''refresh'' content=''1;url=/login?from=%2Fjob%2FProjectName%2Fbuild%3Ftoken%3Dtest''/>
<script>
window.location.replace(''/login?from=%2Fjob%2FProjectName%2Fbuild%3Ftoken%3Dtest'');</script>
</head>
<body style=''background-color:white; color:white;''>
Authentication required
</body></html>
Cuando uso la autenticación API, la solicitud funciona:
curl --username "test_user:API_KEY" https://hostname/job/ProjectName/build?token=test
Pero de nuevo, de acuerdo con la documentación, creo que se supone que omite la autenticación global si? Token está presente y coincide con el token del proyecto que configuro. ¿Por qué esto no funciona? ¿Qué otra información / registros puedo proporcionar?
Ejemplo de uso del complemento "Build Token Root Authorization" con POST:
wget --post-data="job=MyJob&token=SECRET&MyParameter=hello" http://servername/jenkins/buildByToken/buildWithParameters
tenga en cuenta que "Trigger Builds Remotely" debe estar activado para este trabajo (con el token de autorización "SECRET")
Hay un nuevo complemento que le permite hacer eso incluso cuando Jenkins prohíbe el acceso de lectura anónimo:
Utilizar:
$ curl ''http://jenkins/buildByToken/build?job=jobname&token=mytoken''
Scheduled.
Del mismo modo con buildWithParameters
.