Jenkins:' Trigger Construit à distance ' avec?token ne fonctionne pas lorsque la stratégie D'autorisation matricielle est utilisée

j'ai un problème avec le déclenchement des constructions dans Jenkins avec authentification activée et se demandant si quelqu'un a des idées.

J'ai la sécurité globale configurée pour utiliser LDAP avec "Project-based Matrix Authorization Strategy" activée. L'utilisateur" anonyme "a le privilège" Job > Build", et aucun autre privilège (en particulier, l'utilisateur "anonyme" n'a pas le privilège "Overall > Read", car je ne veux pas que tout le monde soit en mesure de voir la liste des emplois et d'autres de l'information générale).

je veux qu'un script automatisé puisse déclencher une construction en utilisant la fonctionnalité "Trigger Builds Remote", où je spécifie un ?token=[token] valeur dans L'URL et l'authentification standard devrait être contournée, aussi longtemps que le [token] la valeur correspond à celle que j'ai définie dans la page de configuration du travail. L'objectif est de besoin de fournir un nom d'utilisateur/mot de passe régulier dans la demande mais simplement fournir le token pour ce travail spécifique.

le la documentation semble indiquer que cela devrait work:

https://wiki.jenkins-ci.org/display/JENKINS/Quick+and+Simple+Security

en particulier, je m'attends à ce que cette requête HTTP fonctionne:

curl -i https://jenkinsHost/job/ProjectName/build?token=test

Mais j'obtiens:

[~]$ 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>

Quand Je utiliser l'authentification API, la requête fonctionne:

curl --username "test_user:API_KEY" https://hostname/job/ProjectName/build?token=test

Mais encore une fois, selon la documentation, je pense que c'est censé contourner l'authentification globale si ?jeton est présent et correspond au projet jeton-je configurer. Pourquoi ça ne marche pas? Quelles autres informations/journaux puis-je fournir?

21
demandé sur Stuart M 2013-04-28 23:46:09

2 réponses

il y a un nouveau plugin qui vous permet de le faire même lorsque Jenkins interdit l'accès anonyme en lecture:

Construire Un Jeton De La Racine Du Plugin

Utilisation:

$ curl 'http://jenkins/buildByToken/build?job=jobname&token=mytoken'
Scheduled.

de même avec buildWithParameters.

36
répondu Daniel Beck 2013-05-15 08:25:18

exemple d'utilisation du plugin "Build Authorization Token Root" avec POST:

wget --post-data="job=MyJob&token=SECRET&MyParameter=hello" http://servername/jenkins/buildByToken/buildWithParameters

note que "Déclencheur Construit à Distance" doit être activée pour ce travail (avec jeton d'autorisation "SECRET")

0
répondu Roman 2017-09-07 11:36:52