【问题标题】:temporary link / url for the attachments of an issue in jira cloud instancejira 云实例中问题附件的临时链接/url
【发布时间】:2020-04-20 00:06:19
【问题描述】:

JIRA 提供了一种使用基本身份验证、jwt 身份验证机制访问问题附件的方法。使用它我们可以下载这些文件。我们可以使用两种身份验证机制下载文件。

示例 jwt 身份验证:

curl -X GET --url https://{site-name}.atlassian.net/secure/attachment/1001/example.txt -H 'Authorization: jwt'

问题/我们的要求:

但是有没有办法为 JIRA 问题的附件生成临时可访问的 url,该附件将在 URI 本身中嵌入令牌。我在下面添加了示例

示例网址:

https://{site-name}.atlassian.net/attachment/1001/example.txt?token={temp_access_token}

访问/点击上述网址时,即使用户未登录其帐户,下载也会自动开始

我们要求的原因:

我们正在创建基于 jira 云的服务/应用程序,其功能之一是通过我们的应用程序提供对用户附件的访问。我们的限制(云服务成本)是我们无法下载所有巨大的附件并存储和管理它。所以我们正在寻找一种解决方案,使用该解决方案用户可以直接从 JIRA 的服务器下载

【问题讨论】:

    标签: jira jira-rest-api


    【解决方案1】:

    在您的 JWT 生成步骤中,您可以定义 JWT 的有效期。您可以像这样将 JWT 附加到 URL:<Jira Base Url>/rest/api/3/...?jwt=...。这样,您可以按需生成 JWT,并且它仅在您定义的给定时间内有效。

    Understanding JWT for Connect apps 页面上的Java 示例 中,您可以看到他们如何设置expirationTime。按需做同样的事情。这里是代码sn-p的重要部分:

    public class JWTSample {
    
        public String createUriWithJwt()
                throws UnsupportedEncodingException, NoSuchAlgorithmException {
            long issuedAt = System.currentTimeMillis() / 1000L;
            long expiresAt = issuedAt + 180L;
    
            /* ... */
    
            JwtJsonBuilder jwtBuilder = new JsonSmartJwtJsonBuilder()
                    .issuedAt(issuedAt)
                    .expirationTime(expiresAt)
                    .issuer(key);
    
            /* ... */
    
            String jwtToken = /* ... */;
    
            String apiUrl = baseUrl + apiPath + "?jwt=" + jwtToken;
            return apiUrl;
        }
    }
    

    安全问题:我明确提到您应该按需生成这些链接,因为您不应将过期日期设置为超过 5-10 分钟(这已经是相当长的时间了)。否则攻击者只需要检索您生成的链接(URL 通常记录在某处)并且也能够检索附件。

    替代方法

    既然您提到您将构建一个服务/应用程序,为什么不通过您的服务链接附件下载?这样你就不必暴露一个潜在的安全威胁的 JWT。例如:您在 UI 中提供了一个下载按钮,这会向您的服务发送 HTTP 请求,您的服务会下载附件,然后将其转发给您的用户。但是,这不符合您向未经身份验证的用户授予访问权限的要求 - 如果您确实想要这样做的话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-28
      • 2013-07-09
      • 2023-02-19
      相关资源
      最近更新 更多