jira云实例中问题附件的临时链接/url

jira云实例中问题附件的临时链接/url,jira,jira-rest-api,Jira,Jira Rest Api,JIRA提供了一种使用基本身份验证、jwt身份验证机制访问问题附件的方法。使用它我们可以下载这些文件。我们可以使用两种身份验证机制下载文件 jwt认证示例: curl-X GET--url https://{site name}.atlassian.net/secure/attachment/1001/example.txt-H'Authorization:jwt' 问题/我们的要求: 但是有没有一种方法可以为JIRA问题的附件生成临时可访问的url,该附件将在URI中嵌入令牌。我在下面添加了一

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

jwt认证示例:

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

问题/我们的要求:

但是有没有一种方法可以为JIRA问题的附件生成临时可访问的url,该附件将在URI中嵌入令牌。我在下面添加了一个例子

示例url:

https://{site name}.atlassian.net/attachment/1001/example.txt?token={temp\u access\u token}

在访问/单击上述url时,即使用户未登录其帐户,下载也应自动启动

我们要求的理由:


我们正在创建基于jira云的服务/应用程序,它的一个功能是通过我们的应用程序提供对用户附件的访问。我们的限制(云服务成本)是我们无法下载所有大型附件并存储和管理。因此,我们正在寻找一种解决方案,用户可以直接从JIRA的服务器下载JWT。在JWT生成步骤中,您可以定义JWT的有效期。您可以像这样将JWT附加到URL:
/rest/api/3/…?JWT=…
。这样,您就可以按需生成JWT,并且它只在您定义的给定时间内有效

在页面上的Java示例中可以看到他们是如何设置
过期时间的。按要求做同样的事情。以下是代码片段的重要部分:

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请求,您的服务下载附件,然后将其转发给您的用户。但是,这不符合您的要求,即允许未经身份验证的用户访问—如果您确实希望这样做的话