在没有用户名和密码的情况下使用 api 密钥访问 JIRA API

Access JIRA API with api key without username and password

目前我正在使用用户名和密码在 C#.Net 应用程序中访问 JIRA API。但是我需要访问 JIRA API 而无需输入用户名和密码,即使没有经过哈希处理的用户名和密码。有什么方法可以创建 API 密钥并使用它访问 JIRA API?

是的,JIRA 为此目的支持 OAuth,请参阅:https://developer.atlassian.com/display/JIRADEV/JIRA+REST+API+Example+-+OAuth+authentication

遗憾的是,没有提供 C# 示例代码,但您应该可以 assemble 此处使用其他编程语言的解决方案: https://bitbucket.org/atlassian_tutorial/atlassian-oauth-examples/src

无论如何你都应该使用通用的 OAuth 库。

当您需要实际用户登录并且您处于浏览器环境中时,Oauth 非常有用。

但是,对于未链接到任何特定用户的 server-to-server 通信(例如 CI),您可能需要在您的 jira 服务器上创建一个 "bot" 帐户并使用 API 代币。此处描述了令牌的创建:https://confluence.atlassian.com/cloud/api-tokens-938839638.html

然后您可以使用 [user-email]:[auth-token] 作为 user/password 进行基本验证。示例:

卷曲

curl -u bot@company.com:AAABBBCCC https://[company].atlassian.net/rest/api/latest/issue/DEV-123

NodeJS 得到:

const issueContent = await gotService.get(
  'https://[company].atlassian.net/rest/api/latest/issue/DEV-123',
  {
    auth: 'bot@company.com:AAABBBCCC'
  }
)

最好的方法是阅读您正在使用的 JIRA 版本的文档,因为不同的版本可能有不同的方法来处理 Rest API。

对我来说,以下端点使用基本身份验证:

curl -u username:password -X GET -H "Content-Type: application/json" http://localhost:8080/rest/api/2/issue/createmeta