使用 Oauth 标头向 Jira REST API 发出的 POST 请求 - 响应 401 "Anonymous User"错误



我正在构建一个Web应用程序,该应用程序将具有提交错误报告的表格。提交后,错误提交表格将使用> JIRA/REST/API/2/dessig endpoint发出HTTP POST请求,以根据用户输入的内容创建单个问题表格。

我已经针对JIRA实例验证了我的申请,并获得了一个OAuth携带者令牌,其中包括在我的HTTP请求标头中。但是,当发出此帖子请求时,我会收到一个401错误,并带有以下错误消息:

匿名用户无权在此项目中创建问题。请先尝试登录。

我不确定为什么JIRA服务器认为此请求匿名,因为该请求包含"授权"。包含OAuth代币的标题,我相信应该对其作为某个用户的请求进行身份验证。但是也许我误解了Oauth代币与Jira实例之间的关系。

这是发出请求的函数的样子(使用React):

  submitBug() {
    var jira_create_issue_api_url = "https://placeholder.org/jira/rest/api/2/issue";
    var xhttp = new XMLHttpRequest();
    xhttp.open("POST", jira_create_issue_api_url, true); //async POST to API resource
    xhttp.setRequestHeader("Content-type", "application/json");
    xhttp.setRequestHeader("Accept", "application/json");
    xhttp.setRequestHeader("X-Atlassian-Token", "no-check");
    xhttp.setRequestHeader("Authorization", "Bearer <oauth token here>");
    xhttp.onload = () => {
      console.log("JIRA REST API responded: ");
      console.log(xhttp.status);
      console.log(xhttp.response);
    };
    var summary_text = this.props.bug_summary; //filled out by user in form
    var desc_text = this.state.bug_description; //filled out by user in form
    var bug_data = {
      fields: {
        project: {
          key: "KEY"
        },
        summary: summary_text,
        description: desc_text,
        issuetype: {
          name: "Bug"
        }
      }
    };
    xhttp.send(JSON.stringify(bug_data)); 
  }

任何洞察力都非常感谢!我是使用Jira Rest API开发的新手,所以我可能会缺少明显的东西。

编辑:按照要求,标头出现在Chrome中:

接受:应用程序/json

授权:持有人[在这里oauth token]

content-type:应用程序/json

原点:[app url]

推荐人:[app url]

用户代理:[浏览器特定信息]

x-atlassian-token:no-check

在jira云中您需要一个API键。

  1. 在此处创建一个API密钥https://id.atlassian.com/manage-profile/security/api-tokens

  2. 授权标题应为:

授权:基本[base64string]

其中base64字符串是以下字符串转换为base64:

电子邮件:apikey

最新更新