Как реализовать авторизацию JWT в аддоне REST Spring Atlassian Connect API? - PullRequest
0 голосов
/ 21 января 2019

Я создал плагин, используя

mvn archetype:generate -DarchetypeGroupId=com.atlassian.connect -DarchetypeArtifactId=atlassian-connect-spring-boot-archetype -DarchetypeVersion=1.5.1

Atlassian-connect.json

{...
 "scopes": [
 "read", "write"
],
"authentication": {
 "type": "jwt"
 },
 "lifecycle": {
 "installed": "/installed",
 "uninstalled": "/uninstalled"
 },
 "enableLicensing": false,
 "modules": {
  "generalPages": [

  {
    "key": "comments",
    "location": "system.top.navigation.bar",
    "name": {
      "value": "Comments"
    },
    "url": "/rest/api",
    "conditions": [{
      "condition": "user_is_logged_in"
    }]
  }
]
  }
}

Я пытаюсь получить доступ к своему API

 AJS.$.ajax({
                    url: "https://X.ngrok.io/rest/api",
                    type: "GET",
                    dataType: "json",
                    contentType: "application/json",
                    async: false, headers: {
    'Authorization' : "JWT {{sessionToken}}"
},
                    success: function (data) {
                        console.log(e);
                    },
                    error: function(response) {

                        console.log(response);
                    }
                    })

Как получить jwt на стороне JS (лучше описать

простой плагин шаг за шагом, если вы могли (я проверил много ссылок с примерами, но ...))?

1 Ответ

0 голосов
/ 29 января 2019

Вы объявляете HTML-страницу в файле atlassian-connect.json, то есть на общей странице комментариев. Следовательно, если кто-то откроет эту страницу, вы можете сгенерировать JWT и вставить его в HTML-документ перед тем, как вернуть его пользователю / заказчику. Затем вы можете использовать этот JWT в своем коде JavaScript. Поскольку вы, похоже, используете шаблон Spring Boot, вам следует заглянуть в раздел «Аутентификация запросов из содержимого iframe обратно в надстройку» в файле readme репозиториев . Это точно описывает ваш случай.

Другим вариантом будет создание JWT на основе JWT, который вы получаете из приложения Connect, такого как Jira или Confluence. Тем не менее, это немного больше работы. Я могу порекомендовать прочитать о том, как получить действительный JWT из приложения Connect в JavaScript , а также о том, как работает фаза установочного рукопожатия . На основании этого вы можете создать свой собственный JWT.

Однако, во всех случаях, пожалуйста, позаботьтесь о том, чтобы вы не генерировали новый токен для каждого запроса, а скорее для сеанса, чтобы вы могли использовать токен для нескольких запросов. Я рекомендую выбрать вариант а), поскольку он уже поддерживается шаблоном Sprint Boot Connect.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...