Atlassian Connect-Express: JIRA REST API authentication within the JIRA plugin

Sarthak Srivastava
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
March 19, 2018

i am using the atlassian-connect-express toolkit for creating Atlassian Connect based Add-ons with Node.js.

It provides Automatic JWT authentication of inbound requests as well as JWT signing for outbound requests back to the host.

The add-on is authenticated when i install it in the JIRA dashboard and return the following pay-load:

{ key: 'my-add-on',  clientKey: '*****',  publicKey: '********'  sharedSecret: '*****'  serverVersion: '100082',  pluginsVersion: '1.3.491',  baseUrl: 'https://myaccount.atlassian.net',  productType: 'jira',  description: 'Atlassian JIRA at https://myaccount.atlassian.net ',  eventType: 'installed' }

But i am not able to authenticate the JIRA Rest Api with the JWT token generated by the framework. It throws below error message

404 '{"errorMessages":["Issue does not exist or you do not have permission to see it."],"errors":{}}'

below is the code when i send a GET request:

app.get('/getissue', addon.authenticate(), function(req, res){

 var request = require('request');      request({           url: 'https://myaccount.atlassian.net/rest/api/2/issue/ABC-1', 
           method: 'GET',   
    }, function(error, response, body){
        if(error){            console.log("error!");
         }else{            console.log(response.statusCode, body);
          }
    }); 
    res.render('getissue');
});

Below is the code for my app descriptor file:

{
"key": "my-add-on",
"name": "Ping Pong",
"description": "My very first add-on",
"vendor": {
    "name": "Ping Pong",
    "url": "https://www.example.com"
},
"baseUrl": "{{localBaseUrl}}",
"links": {
    "self": "{{localBaseUrl}}/atlassian-connect.json",
    "homepage": "{{localBaseUrl}}/atlassian-connect.json"
},
"authentication": {
    "type": "jwt"
},
"lifecycle": {
    "installed": "/installed"
},
"scopes": [
    "READ",
    "WRITE"
],
"modules": {
    "generalPages": [
        {
            "key": "hello-world-page-jira",
            "location": "system.top.navigation.bar",
            "name": {
                "value": "Hello World"
            },
            "url": "/hello-world",
            "conditions": [{
                "condition": "user_is_logged_in"
            }]
        },

            {
                "key": "getissue-jira",
                "location": "system.top.navigation.bar",
                "name": {
                    "value": "Get Issue"
                },
                "url": "/getissue",
                "conditions": [{
                    "condition": "user_is_logged_in"

                    }]                
        }
    ]
}}

I am pretty sure this is not the correct way i am doing, Either i should use OAuth. But i want to make the JWT method for authentication work here.

1 answer

0 votes
fredericmamath
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
December 23, 2023

Hello there, 

As of 2023, I have met the exact same issue as you.

Did you manage to find a solution there ?

Suggest an answer

Log in or Sign up to answer