【问题标题】:JIRA Cloud REST API : Forbidden (403) errorJIRA Cloud REST API:禁止(403)错误
【发布时间】:2019-03-19 08:21:23
【问题描述】:

我正在尝试在我正在开发的应用程序中使用 JIRA Cloud REST API。最近我开始收到 403 错误。直到大约一周前,我的集成都是可靠的,但是这些错误响应已经开始变得非常频繁。

我已关注3LO code grants 的文档。目前,我有:

  1. application dashboard 下设置了一个名为“App”的应用程序
  2. 在应用程序仪表板中,我的“应用程序”可以访问“Jira 平台 REST API”和“授权码授予”
  3. 在我的“应用程序”的“Jira 平台 REST API”下,查看 Jira 问题数据查看用户配置文件选项均已添加/启用

当尝试使用 JIRA Cloud REST API 进行身份验证时,一切似乎都按预期工作。

  1. 我首先重定向用户以授权“应用”通过https://accounts.atlassian.com/authorize 访问来自 JIRA 的数据。我在此请求中包含以下范围:offline_access read:jira-user read:jira-work 以确保所需的读取权限和令牌更新的能力(即offline_access

  2. 授权后,我被重定向回我的应用程序并通过https://accounts.atlassian.com/oauth/token 请求访问令牌(使用提供的重定向code)。这成功了,我现在有有效的access_tokenrefresh_token

  3. 我现在首次调用 JIRA 的 Cloud REST API:https://api.atlassian.com/oauth/token/accessible-resources。我使用之前获得的access_token 通过此调用获取我的网站cloud_id。这按预期工作,我现在有我的网站cloud_id

  4. 我现在尝试对 JIRA 的 Cloud REST API 进行秒调用:https://api.atlassian.com/ex/jira/{MY_CLOUD_ID}/rest/api/3/search。我通过这些请求标头以与以前相同的方式使用access_token

    headers: {
        'Authorization': `Bearer { MY_ACCESS_TOKEN }`,
        'Accept': 'application/json'
    }
    

我一直得到的回复如下:

如前所述,这在过去一周左右运行良好。不幸的是,JIRA 文档没有将403 列为search method 的响应代码。

【问题讨论】:

    标签: rest oauth jira jira-rest-api


    【解决方案1】:

    最终的解决方案是在向 JIRA 的 Cloud REST API 发出请求时通过 Authorization 标头使用 Basic Authentication

    https://CLOUD_ID.atlassian.net/rest/api/3/API_METHOD   
    

    标题:

    'Authorization': 'Basic ZGFjcmVAb...',
    'Accept': 'application/json'
    

    基本身份验证将在未来移除according to the API documentation,因此这被视为权宜之计。

    【讨论】:

      【解决方案2】:

      两件事... (1) 本周早些时候有一篇帖子表明某人在云中的搜索行为也发生了变化。您可能想查找该帖子以查看它是如何解决的(我稍后会查找它,如果找到它,我将在此处添加链接)。他和你一样使用“api/3”......文档说“api/3”处于测试阶段。所以也许可以试试“api/2”?

      (2) 我不知道这段代码是否有帮助...它访问 REST API,但我所做的调用与你的有很大不同。这是针对 JIRA 的本地版本(使用最新代码进行更新)。我没有要测试的云实例。

      要求登录/认证:

      Const APIAuthPath = "/rest/auth/1/session"
      
      
      Sub Call_JIRALogin(pUserName, pPassword)
      
          Dim JIRASendString As String, JIRASendURL As String
      
          JIRASendURL = BaseURL1 & APIAuthPath
      
          JIRASendString = " {"
          JIRASendString = JIRASendString & Chr(34) & "username" & Chr(34) & ":" & Chr(34) & pUserName & Chr(34)
          JIRASendString = JIRASendString & ","
          JIRASendString = JIRASendString & Chr(34) & "password" & Chr(34) & ":" & Chr(34) & pPassword & Chr(34)
          JIRASendString = JIRASendString & "}"
      
      
          Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
          objHTTP.setOption 2, 13056
      
      
          With objHTTP
              .Open "POST", JIRASendURL, False
              .setRequestHeader "Content-Type", "application/json"
              .setRequestHeader "Accept", "application/json"
              .send (JIRASendString)
              CResponse1 = .responseText
              cCookie1 = "JSESSIONID=" & Mid(CResponse1, 42, 32) & "; Path=/Jira"  '*** Extract the Session-ID
              CStatus1 = .Status
          End With
      

      后续调用:

      Sub BBB_SingleIssue_Driver(inIssueId)
      
      
          Dim JIRASendURL
      
          CurrIssue = inIssueId
      
          JIRASendURL = BaseURL1 & "/rest/api/2/issue/" & CurrIssue
      
          With objHTTP
              .Open "GET", JIRASendURL, False
              .setRequestHeader "Set-Cookie", cCookie1 '*** see Create a "Cookie"
              .send
              CResponse1 = .responseText
              CStatus1 = .Status
          End With
      
          If CStatus1 <> 200 Then
              MsgBox ("Failed to retrieve issue " & CurrIssue & "  status code : " & CStatus1)
              GlobalHttpStatus = CStatus1
              GlobalHttpResponse = CResponse1
              GlobalStep = "Retrieve Issue: " & CurrIssue
              GoTo SingleIssueErrOut
          End If
      
          '  handle a good response
      
      SingleIssueErrOut:
      
          '  handle an error    
      
      End Sub
      

      【讨论】:

      • 感谢您的回答 - 奇怪的是,v2 对我来说失败了,这让我尝试了 v3。我“开箱即用”工作了几天,然后开始出现相同的 403 问题。如果你能找到你提到的那个帖子,那就太好了 - 再次感谢
      • 这是我提到的帖子。看起来还没有任何可靠的答案:stackoverflow.com/questions/52654141/…
      • 欣赏,会继续关注
      猜你喜欢
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 2013-04-05
      • 2015-02-12
      相关资源
      最近更新 更多