• Community
  • Questions
  • Access to JIRA ressource using 'com.atlassian.jira:jira-rest-java-client-core:5.0.4' and OAUth ident

Access to JIRA ressource using 'com.atlassian.jira:jira-rest-java-client-core:5.0.4' and OAUth ident

Maxime I'm New Here Jan 16, 2018
Hello, i'm trying to access to JIRA ressource using 'com.atlassian.jira:jira-rest-java-client-core:5.0.4' and OAUth indentification protocol.

I configure the following dependencies

dependencies {
    // Dependencies to jira-rest-java-client-core
    compile 'com.atlassian.jira:jira-rest-java-client-core:5.0.4'
    compile 'org.apache.httpcomponents:httpcore:4.4.8'
    compile 'org.apache.httpcomponents:httpcore-nio:4.4.8'
    compile 'com.atlassian.fugue:fugue:2.7.0'
    // Bellow is the a simple binding to the "standard" error output stream
    compile 'org.slf4j:slf4j-simple:1.7.10'
    // Dependencies to net.oauth.core
    compile 'net.oauth.core:oauth:20100527'
    compile 'net.oauth.core:oauth-consumer:20100527'
    compile 'net.oauth.core:oauth-httpclient4:20090913'
    // JUNIT
    testCompile 'junit:junit:4.12'

My JIRAis already configure for an OAuth access, and i have a consumer key, a private key and an access_token.

I try to retrieve an issue using following code.

import java.net.URI;
import java.util.Collections;
import java.util.Map;
import java.util.Map.Entry;

import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.atlassian.httpclient.api.Request.Builder;
import com.atlassian.jira.rest.client.api.AuthenticationHandler;
import com.atlassian.jira.rest.client.api.JiraRestClient;
import com.atlassian.jira.rest.client.api.JiraRestClientFactory;
import com.atlassian.jira.rest.client.api.domain.Issue;
import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory;
import com.thalesgroup.atms.jira.internal.JiraAccessServicesTest;

import net.oauth.OAuth;
import net.oauth.OAuthAccessor;
import net.oauth.OAuthConsumer;
import net.oauth.OAuthMessage;
import net.oauth.OAuthServiceProvider;
import net.oauth.ParameterStyle;
import net.oauth.client.OAuthClient;
import net.oauth.http.HttpMessage;
import net.oauth.signature.RSA_SHA1;

 * Test for OAuth authentification
public class OAuthTest {
    /** A Logger. */
    private static final Logger LOG = LoggerFactory.getLogger(JiraAccessServicesTest.class.getName());

    private static final String SERVLET_BASE_URL = "/plugins/servlet";

    /** A Jira Consumer key. */
    private String consumerKey = "";

    /** A Jira access token. */
    String access_token;

    /** A Jira private key. */
    private String privateKey;

    /** JIRA URL */
    String baseUrl;

    /** OAuth accessor to JIRA. */
    private OAuthAccessor accessorSingleton;

     * Declare the JIRA OAuth.
    public void oAuth() {
        access_token = "_______thisIsAnAccessToken______";
        consumerKey = "__consumer__";
        privateKey = "ThisIsAPrivateKeyWithUpperAndLowerCaseAndNumber123AndSpecialChar\r\n"
            + "ThisIsAPrivateKeyWithUpperAndLowerCaseAndNumber123AndSpecialChar\r\n"
            + "ThisIsAPrivateKeyWithUpperAndLowerCaseAndNumber123AndSpecialChar\r\n"
            + "ThisIsAPrivateKeyWithUpperAndLowerCaseAndNumber123AndSpecialChar\r\n"
            + "ThisIsAPrivateKeyWithUpperAndLowerCaseAndNumber123AndSpecialChar\r\n"
            + "ThisIsAPrivateKeyWithUpperAndLowerCaseAndNumber123AndSpecialChar\r\n"
            + "ThisIsAPrivateKeyWithUpperAndLowerCaseAndNumber123AndSpecialChar\r\n"
            + "ThisIsAPrivateKeyWithUpperAndLowerCaseAndNumber123AndSpecialChar\r\n"
            + "ThisIsAPrivateKeyWithUpperAndLowerCaseAndNumber123AndSpecialChar\r\n"
            + "ThisIsAPrivateKeyWithUpperAndLowerCaseAndNumber123AndSpecialChar\r\n"
            + "ThisIsAPrivateKeyWithUpperAndLowerCaseAndNumber123AndSpecialChar\r\n"
            + "ThisIsAPrivateKeyWithUpperAndLowerCaseAndNumber123AndSpecialChar\r\n"
            + "ThisIsAPrivateKeyWithUpperAndLowerCaseAndNumber123AndSpecialChar\r\n"
            + "ThisIsAPrivate==";
        baseUrl = "http://my.jira.instance:8070";

     * @throws Exception if occured.
    public void test() throws Exception {
        final JiraRestClientFactory factory = new AsynchronousJiraRestClientFactory();
        final URI jiraServerUri = new URI(baseUrl);
        final JiraRestClient restClient = factory.create(jiraServerUri, new AuthenticationHandler() {
            public void configure(final Builder builder) {
                try {
                    final OAuthAccessor accessor = getAccessor();
                    accessor.accessToken = access_token;
                    final OAuthMessage request2 = accessor.newRequestMessage(null,
                            /* request.getUri().toString() */ baseUrl, Collections.<Map.Entry<?, ?>> emptySet());
                    final Object accepted = accessor.consumer.getProperty(OAuthConsumer.ACCEPT_ENCODING);
                    if (accepted != null) {
                                new OAuth.Parameter(HttpMessage.ACCEPT_ENCODING, accepted.toString()));
                    final Object ps = accessor.consumer.getProperty(OAuthClient.PARAMETER_STYLE);
                    final ParameterStyle style =
                            (ps == null) ? ParameterStyle.BODY : Enum.valueOf(ParameterStyle.class, ps.toString());
                    final HttpMessage httpRequest = HttpMessage.newRequest(request2, style);
                    for (final Entry<String, String> ap : httpRequest.headers) {
                        builder.setHeader(ap.getKey(), ap.getValue());
                } catch (final Exception e) {

        final Issue issue = restClient.getIssueClient().getIssue("ISSUEID-1234").claim();



     * OAuthAccessor
     * @return OAuthAccessor
    final OAuthAccessor getAccessor() {
        if (accessorSingleton == null) {
            final OAuthServiceProvider serviceProvider =
                    new OAuthServiceProvider(getRequestTokenUrl(), getAuthorizeUrl(), getAccessTokenUrl());
            final OAuthConsumer consumer = new OAuthConsumer(null, consumerKey, null, serviceProvider);
            consumer.setProperty(RSA_SHA1.PRIVATE_KEY, privateKey);
            consumer.setProperty(OAuth.OAUTH_SIGNATURE_METHOD, OAuth.RSA_SHA1);
            accessorSingleton = new OAuthAccessor(consumer);
        return accessorSingleton;

     * AccessTokenUrl
     * @return AccessTokenUrl
    private String getAccessTokenUrl() {
        return baseUrl + SERVLET_BASE_URL + "/oauth/access-token";

     * AuthorizeUrl
     * @return AuthorizeUrl
    private String getAuthorizeUrl() {
        return baseUrl + SERVLET_BASE_URL + "/oauth/authorize";

     * RequestTokenUrl
     * @return RequestTokenUrl
    private String getRequestTokenUrl() {
        return baseUrl + SERVLET_BASE_URL + "/oauth/request-token";

But it doesn't work ?

Which URL should I put in the newRequestMessage ?

What is the callbackURL of the OAuthConsumer ?

Thanks a lot for your help.

0 answers

Suggest an answer

Log in or Join to answer
Community showcase
Louis De Jaeger
Posted yesterday in Off-topic

Friday fun: your best joke

Hi all Lets make this Friday fun really fun and post one (or more) of your best jokes! The joke can be about an Atlassian product, or just a really fun joke you want to share! I’m not the best j...

107 views 5 2
Join discussion

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you
Atlassian Team Tour

Join us on the Team Tour

We're bringing product updates and pro tips on teamwork to ten cities around the world.

Save your spot