I am trying to create a job on Jenkins using java client (https://github.com/jenkinsci/java-client-api) by calling .createJob(String jobName, String configXml) . However, Jenkins server throws 403 forbidden error.
Sample Code :
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);
Now, error I am getting :
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)
Jenkins Server security :
When I select "Any user can do any thing", job creation is successful. However, when I select "Logged In user can do any thing", I am getting the above error. Moreover, even though I am sending correct user and password, with all permission to create job ( able to create a job using Jenkins web UI).
What permission or setting change is required to achieve this.
Thanks
Best Answer
To resolve this issue try by unchecking "Prevent Cross Site Request Forgery exploits" in jenkins.com/configureSecurity section and it started working.