Showing results for 
Search instead for 
Did you mean: 
Sign up Log in
It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

JIRA Java Rest client Api returns 401 on authentication.

While attempting to connect with JIRA and get issues I get Error 401 for one of the account (Jira Cloud). This same configuration works well with other account (Jira Server). 

When navigated to "View OAuth Access Tokens" section i see this. Not sure if this is the issue...but for the other account I see one created for me under same section for which the authentication works well and was able to get the data's as required.

Attached screenshot for reference. Please guide me with this.




The sample code is below:

 public JiraClient() {
// this is constructor
this.username = properties.getProperty("jira.userName");
this.password = properties.getProperty("jira.password");
this.jiraUrl = properties.getProperty("jira.url");
this.restClient = getJiraRestClient();

private JiraRestClient getJiraRestClient() {
return new AsynchronousJiraRestClientFactory().createWithBasicHttpAuthentication(getJiraUri(), getUsername(), getPassword());

Please find the below error code.

Caused by: RestClientException{statusCode=Optional.of(401), errorCollections=[]}
at com.atlassian.httpclient.api.ResponsePromiseMapFunction.apply(
at com.atlassian.httpclient.api.ResponsePromiseMapFunction.apply(
at io.atlassian.util.concurrent.Promises$OfStage.lambda$fold$4(
at io.atlassian.util.concurrent.Promises.lambda$biFunction$7(
at java.util.concurrent.CompletableFuture.uniHandle(
at java.util.concurrent.CompletableFuture$UniHandle.tryFire(
at java.util.concurrent.CompletableFuture.postComplete(
at java.util.concurrent.CompletableFuture.complete(
at com.atlassian.httpclient.apache.httpcomponents.SettableFuturePromiseHttpPromiseAsyncClient$1.lambda$doCompleted$0(
at com.atlassian.httpclient.apache.httpcomponents.SettableFuturePromiseHttpPromiseAsyncClient.runInContext(
at com.atlassian.httpclient.apache.httpcomponents.SettableFuturePromiseHttpPromiseAsyncClient$
at java.util.concurrent.ThreadPoolExecutor.runWorker(
at java.util.concurrent.ThreadPoolExecutor$
Caused by: org.codehaus.jettison.json.JSONException: A JSONObject text must begin with '{' at character 10 of

<html><head><title>Unauthorized (401)</title>

at org.codehaus.jettison.json.JSONTokener.syntaxError(
at org.codehaus.jettison.json.JSONObject.<init>(
at org.codehaus.jettison.json.JSONObject.<init>(

1 answer

1 accepted

1 vote
Answer accepted

Hi @Hari Hara Bhuvanesh ,

If the same code works fine for Jira Server but you are getting error "401 - unauthorized" in Jira Cloud, this can be because in Cloud basic authentication with username and password has been replaced by basic authentication with email address and API Token:

Atlassian has introduced support for API tokens for all Atlassian Cloud sites as a replacement for basic authentication requests that previously used a password or primary credential for an Atlassian account, as well as cookie-based authentication.

Basic authentication with passwords and cookie-based authentication are now deprecated and will be removed in 2019 in accordance with the Atlassian REST API policy.


Please replace username and password with email address and API Token and let us know if this solves the issue. 



Hi @Dario B 

Thanks for the reply. Sorry I missed the email notification of your response. I was thinking no one replied but just when had a look on this noticed your reply on my question.

It will be helpful if you share the steps that I need to follow to authenticate using API token. If possible please share the working piece of code in java that should be used for authentication.

Also I'm not sure on what to be entered in below section. Please advise.


Dario B Atlassian Team Jan 07, 2020

@Hari Hara Bhuvanesh ,

If you search the community you can find many threads with JAVA snippets showing hot to perform basic authentication like, for example:


The only difference is that instead of username and password you will use email address and API Token respectively.


For the rest, please notice that the provided screenshot has nothing to do with REST API authentication but is used to integrate with self hosted tools using Oauth.


For further details and in order to get a better understanding on this, please review the below documentation pages:




@Dario B 

Thanks for the update. It worked like a charm...!!! Much Appreciated...

Like Dario B likes this
Dario B Atlassian Team Jan 14, 2020

You are very welcome @Hari Hara Bhuvanesh ! 

Can you kindly accept the answer so that this thread will be marked as resolved? 



@Dario B 

Yes you can mark this as resolved... :)

Like Dario B likes this

Hi, i am using the email id (username) and API token (password) for authentication, which is correct as per the documentation.

Still see this issue.

RestClientException{statusCode=Optional.of(401), errorCollections=[]}] with root cause

org.codehaus.jettison.json.JSONException: A JSONObject text must begin with '{' at character 1 of Basic authentication with passwords is deprecated.


--------------------------------------excerpt from POM------------------------------




What am i missing here ?... Could you kindly guide ?

This stands resolved... 


1./ The URL was changed to https://<JIRA_BASE_URL> as opposed to https://<JIRA_BASE_URL>/rest/api/2/issue

2./ Correct value of the issue type (bug) is 10004l in my case.

Suggest an answer

Log in or Sign up to answer

Community Events

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

Find an event

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

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you