Search code examples
javajenkinsjenkins-cli

How to remotely login to a Jenkins server using Java?


I'm trying to login remotely to a Jenkins server using Java.

I didn't found some documentation on how this should be securely done.

For my local server using the url: http://user:pass@server doesn't work .

Can anybody recommend me some documentation regarding this topic ?


Solution

  • Documention from jenkins wiki

    Should work with your Basic Authentication type.

    Java example with httpclient 4.3.x

    import java.io.IOException;
    import java.net.URI;
    
    import org.apache.http.HttpHost;
    import org.apache.http.HttpResponse;
    import org.apache.http.auth.AuthScope;
    import org.apache.http.auth.UsernamePasswordCredentials;
    import org.apache.http.client.AuthCache;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.CredentialsProvider;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.protocol.HttpClientContext;
    import org.apache.http.impl.auth.BasicScheme;
    import org.apache.http.impl.client.BasicAuthCache;
    import org.apache.http.impl.client.BasicCredentialsProvider;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    
    public class JenkinsScraper {
    
        public String scrape(String urlString, String username, String password) throws ClientProtocolException, IOException {
            URI uri = URI.create(urlString);
            HttpHost host = new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme());
            CredentialsProvider credsProvider = new BasicCredentialsProvider();
            credsProvider.setCredentials(new AuthScope(uri.getHost(), uri.getPort()), new UsernamePasswordCredentials(username, password));
            // Create AuthCache instance
            AuthCache authCache = new BasicAuthCache();
            // Generate BASIC scheme object and add it to the local auth cache
            BasicScheme basicAuth = new BasicScheme();
            authCache.put(host, basicAuth);
            CloseableHttpClient httpClient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build();
            HttpGet httpGet = new HttpGet(uri);
            // Add AuthCache to the execution context
            HttpClientContext localContext = HttpClientContext.create();
            localContext.setAuthCache(authCache);
    
            HttpResponse response = httpClient.execute(host, httpGet, localContext);
    
            return EntityUtils.toString(response.getEntity());
        }
    
    }