Mae Gweinydd Jenkins yn taflu 403 wrth gyrchu api gorffwys neu ddefnyddio cleient jenkins java i greu swydd

Rwy'n ceisio creu swydd ar Jenkins gan ddefnyddio cleient java ( https://github.com/jenkinsci/java-client-api ) trwy ffonio. createJob (String jobName, String configXml). Fodd bynnag, mae gweinydd Jenkins yn taflu 403 gwall gwaharddedig.

Cod Sampl:

HttpClientBuilder builder = HttpClientBuilder.create();
JenkinsHttpClient client = new JenkinsHttpClient(uri, builder, "XXX", "XXX");
JenkinsServer jenkins = new JenkinsServer(client);
String sourceXML = readFile("src/main/resources/config.xml");
System.out.println(String.format("Installed Jenkins Version >> %s", jenkins.getVersion().getLiteralVersion()));//works and gives correct result
jenkins.createJob("test-nov1", sourceXML);

Nawr, gwall rwy'n ei gael:

Exception in thread "main" org.apache.http.client.HttpResponseException: status code: 403, reason phrase: Forbidden
    at com.offbytwo.jenkins.client.validator.HttpResponseValidator.validateResponse(HttpResponseValidator.java:11)
    at com.offbytwo.jenkins.client.JenkinsHttpClient.post_xml(JenkinsHttpClient.java:375)
    at com.offbytwo.jenkins.JenkinsServer.createJob(JenkinsServer.java:389)
    at com.offbytwo.jenkins.JenkinsServer.createJob(JenkinsServer.java:359)
    at com.hcl.OffByTwoJenkins.main(OffByTwoJenkins.java:31)

Diogelwch Gweinyddwr Jenkins: Pan fyddaf yn dewis "Gall unrhyw ddefnyddiwr wneud unrhyw beth", mae creu swyddi yn llwyddiannus. Fodd bynnag, pan fyddaf yn dewis "Gall defnyddiwr sydd wedi Mewngofnodi wneud unrhyw beth", rwy'n cael y gwall uchod. Ar ben hynny, er fy mod yn anfon defnyddiwr a chyfrinair cywir, gyda phob caniatâd i greu swydd (yn gallu creu swydd gan ddefnyddio Jenkins web UI). Pa ganiatâd neu newid gosodiad sydd ei angen i gyflawni hyn.

Diolch

1
задан 1 November 2019 в 08:12
2 ответа

Чтобы решить эту проблему, попробуйте снять флажок «Предотвратить эксплойты подделки межсайтовых запросов» в разделе jenkins.com/configureSecurity , и он начнет работать.

0
ответ дан 4 December 2019 в 02:34

Используйте токен API для создания JenkinsHttpClient, чтобы избежать этой проблемы.

JenkinsHttpClient jenkinsHttpClient = new JenkinsHttpClient(new URI("http://192.168.0.11:8080"),
            "admin", "your api token");

Вы можете сгенерировать токен API из панели инструментов jenkins (Jenkins> Пользователи> Выберите пользователя> настройки> добавить новый токен API).

0
ответ дан 3 November 2021 в 07:28

Теги

Похожие вопросы