通过Jira插件对外部API进行身份验证

时间:2018-07-13 22:45:16

标签: oauth-2.0 jira jira-plugin

我正在构建一个Jira附加组件,该附加组件为用户提供了我自己的API中(而不是Jira中)对象的状态。我的API受OAuth 2.0保护。从我的Jira插件向我的API进行身份验证的最佳方法是什么?

我喜欢Jira + GitHub / Bitbucket集成的工作方式。具体来说,用户从GitHub检索API密钥并将其放入Jira。然后,Jira使用这些密钥进行身份验证,然后从GitHub检索数据。至少,我是这样认为的。

如何为我的Jira附加组件实现相同的效果?

1 个答案:

答案 0 :(得分:1)

在构建云插件时,您可以处理身份验证而无需打扰管理员(他们无需复制任何内容)。 为了将自己与Jira UI集成,在两种情况下,您都需要创建一个Webpanel或页面,Jira将要求您的网站呈现HTML代码,并且请求中将包含JWT token。在内部,您将了解有关哪个用户发出了请求。

现在,您可以通过以下几种方式对Jira用户进行API身份验证:

  • 向HTML呈现一个限时令牌,并使用它来验证对您的API的调用。作为此解决方案的缺点,如果有人将页面保持打开状态而未重新加载足够长的时间(超过您的时间限制),则令牌将无效。
  • 提供一种资源来检索限时令牌(验证Jira提供的JWT签名以确保请求确实来自特定的Jira实例),并在每次执行请求之前(或每N分钟,取决于您的时限)检索令牌。 )。
  • 或者,如果您真的想打扰管理员,请创建一个配置页面,让他们手动保存API密钥(我认为他们必须以某种方式从您那里检索这些密钥,此附加步骤可能会阻止许多管理员)页面上,您将包含JS代码,该代码在提交时会将API密钥另存为Application property,稍后您将必须检索此密钥,然后才能向您的API提出请求。但是,通过这种方法,管理员将无法将对您的API的访问权限限制为具有Jira权限的部分用户(每个登录用户都可以访问应用程序属性,即使在打开实例中,甚至是匿名用户)。

如果不确定如何验证JWT令牌,则可以阅读this developer guide.,并且可以通过使用provided framework and tools之一来简化生活,例如atlassian-connect-spring-boot将负责安装握手,JWT身份验证以及从服务器到Jira REST API的身份验证。