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.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.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 Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Posted Friday in Off-topic

Friday Fun: Riddle me this

Happy Friday, Funmakers! We had a Community Team offsite in Austin this week, and my mind feels primed for thinkin' from all the brainstorming we did!  So, this week's Friday Fun thread w...

212 views 24 5
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