【问题标题】:JIRA Cloud REST API (OAuth 2.0) Error 403 on POST RequestsJIRA Cloud REST API (OAuth 2.0) POST 请求出现错误 403
【发布时间】:2019-05-17 09:55:47
【问题描述】:

我正在尝试将我的 React 应用程序连接到 Jira Cloud API,但似乎无法通过 403 错误。

我的代码目前使用OAuth 2.0 进行身份验证,并返回令牌和cloudid。我可以使用它来获取问题,但是 POST 请求(如创建问题)返回 403。我发现 here 如果用户没有访问资源或运行的必要权限,则会返回此错误方法。

我已确保用户具有正确的范围([写入:jira-work,读取:jira-work])并验证这反映在用户帐户中(在他们的帐户 > 连接应用程序选项卡中)。

我的应用程序未链接(通过 ApplicationLink)或安装(通过应用程序、管理应用程序),这是否需要执行 POST 请求?

这是我的代码示例:

fetch(`https://api.atlassian.com/ex/jira/${jira.cloudid}/rest/api/2/issue/`, {
    method: "POST",
    headers: {
        "Content-Type": 'application/json',
        "Authorization": `Bearer ${jira.token}`
    },
    body: JSON.stringify(data)
})
.then(...)

api 版本 2 或 3 都不适用于此 POST 请求。我已经探索过使用 Basic Auth 但是由于 CORS 错误而失败。

我已验证 POST 请求在 POSTMAN 中确实有效(使用 cloudid 和令牌)。

------------------------------------------ -------------------------------------------------- -----------------------------

更新

在与 Atlassian 员工交谈后,他们的 API 安全存在问题:

“通过尝试您提到的相同操作,我想我找到了问题所在。您的请求可能会失败,并在浏览器中显示“XSRF 检查失败”。 我已经和我们的一位安全工程师谈过了,我们很快深入研究了实现代码,以确认为什么这不起作用以及我们需要改变什么。我们也已经打开了工程票来解决这个问题。这可能需要几周时间才能得到解决,但如果我听到任何更新,我会及时通知您!”

XSRF check failed 是我的 403 响应的主要错误。我会发布我收到的任何更新并在找到解决方案时回答问题。

【问题讨论】:

  • 问题中显示的请求代码会导致您的浏览器在尝试来自您的代码的 POST 请求之前发出 CORS 预检 OPTIONS 请求。 HTTP 状态代码或对该 OPTIONS 请求的响应是什么? (使用浏览器 devtools 中的“网络”窗格进行检查。)对该 OPTIONS 请求的响应是 200 OK 还是该 403 错误实际上是对该 OPTIONS 请求的响应?
  • 我注意到developer.atlassian.com/cloud/jira/service-desk/rest 的文档显示了使用 curl 以及从 Node.js、Java、Python 和 PHP 代码调用 API 的示例,这些文档不包含任何提及或示例从在浏览器中运行的前端 JavaScript 代码中使用它。因此,该 API 似乎实际上并不打算在前端 JavaScript 代码中使用。所以这就像没有启用 CORS 一样——更具体地说,不支持 OPTIONS 请求。
  • 这里是来自网络选项卡的一些响应:状态:403 Access-Control-Allow-Origin:localhost:3000 X-XSS-Protection:1;模式=块访问控制允许凭据:真 X 内容类型选项:nosniff 变化:来源,接受编码 X 帧选项:SAMEORIGIN 严格传输安全:max-age=315360000;包括子域;预加载
  • 我假设由于 SAMEORIGIN 政策,它拒绝了这个请求。这样的 API 在这种情况下允许 GET 但不允许 POST 是否正常?
  • 您评论中显示的响应表明我对 API 未启用 CORS 的推测是错误的。响应表明 API 实际上已启用 CORS。所以这个问题至少与 CORS 无关。

标签: reactjs oauth-2.0 fetch jira jira-rest-api


【解决方案1】:
猜你喜欢
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-03
相关资源
最近更新 更多