java - 如何在插件 REST Spring Atlassian Connect API 中实现 JWT 授权?

标签 java jira

我使用创建插件

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);
                    }
                    })

JS端如何获取jwt(最好描述一下

简单的插件一步一步,如果你可以的话(我检查了很多带有示例的链接,但是......))?

最佳答案

您正在 atlassian-connect.json 文件中声明一个 HTML 页面,即“评论”常规页面。因此,如果有人打开此页面,您可以生成 JWT 并将其注入(inject) HTML 文档然后将其返回给用户/请求者。然后您可以在 JavaScript 代码中使用此 JWT。由于您似乎正在使用 Spring Boot 模板,因此您应该查看 repositories readme file 中的“验证从 iframe 内容返回到加载项的请求”部分。 。这正是描述您的情况。

另一个选项是根据您从 Jira 或 Confluence 等 Connect 应用程序收到的 JWT 生成 JWT。然而,这还需要做更多的工作。我可以建议您阅读有关如何获得 a valid JWT from the Connect application within JavaScript 的信息。以及 installation handshake phase 如何作品。基于这些,您可以生成自己的 JWT。

但是,在所有情况下,请注意您不会为每个请求生成新 token ,而是为 session 生成新 token ,因此您可以将 token 用于多个请求。我建议使用选项 a),因为 Sprint Boot Connect 模板已经支持它。

关于java - 如何在插件 REST Spring Atlassian Connect API 中实现 JWT 授权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54286462/

相关文章:

search - Atlassion 是从头开始构建 JIRA 查询语言 (JQL) 的吗?

python - 使用 Python 在 JIRA 中使用受让人、观察者和附件创建新问题

Java Session失效和超时不起作用

java mysql 磁盘已满

java - 如何从 Java 在 BigQuery 中创建分区表?

java - HazelCast分布式二级缓存和更新失效

java - 类型参数 E 隐藏了类型 E。尝试了不同的变体,但仍然无法修复

JIRA 集成