使用 OAuth 和 Node.JS 对 JIRA REST API 进行身份验证

Posted

技术标签:

【中文标题】使用 OAuth 和 Node.JS 对 JIRA REST API 进行身份验证【英文标题】:Authenticate JIRA REST API using OAuth with Node.JS 【发布时间】:2013-07-14 06:07:41 【问题描述】:

我正在 Node.js 中构建一个客户端应用程序以创建新的 JIRA 问题,并且我想使用 OAuth 对用户进行身份验证。 Atlassian 文档对于 Jira 和 Oauth 的新手来说非常糟糕。因此,我正在寻找一个示例来准确描述如何设置 JIRA 应用程序链接,以及如何在节点中构建一个通过 OAuth 连接到 Jira 的基本应用程序。我不知道还能去哪里看。 (我使用的是 JIRA v6.0.4)

【问题讨论】:

你成功了吗? Atlassian 的 Bitbucket 上有一个 Node.js 示例,在这里:bitbucket.org/atlassian_tutorial/atlassian-oauth-examples。 看看这个答案 - 可能对你有帮助:***.com/a/19116334/129815 【参考方案1】:

Brian 还提到了 Atlassian 存储库中有一个 example for Node.JS with OAuth。我认为这是用于 2 腿身份验证。

它需要您已经设置的预先协商的消费者密钥。以下是如何获取可以保存在配置文件中的令牌的示例:https://developer.atlassian.com/jiradev/api-reference/jira-rest-apis/jira-rest-api-tutorials/jira-rest-api-example-oauth-authentication

【讨论】:

不要忘记检查这个 repo 的问题和用户解决方案。它很旧,需要更新!【参考方案2】:

Here's a blog describing node.js and jira authentication using Oauth

它在一个快速的框架中。我在下面粘贴了部分代码。

var base_url = "YOUR_JIRA_BASE_URL"; //example https://test.atlassian.net

app.get('/jira', function(req, res) 

var oa = new OAuth(base_url + "/plugins/servlet/oauth/request-token", //request token
    base_url + "/plugins/servlet/oauth/access-token", //access token
    "mykey", //consumer key 
    "YOUR_PEM_FILE_CONTENT", //consumer secret, eg. fs.readFileSync('jira.pem', 'utf8')
    '1.0', //OAuth version
    "http://localhost:1337/jira/callback", //callback url
    "RSA-SHA1");
oa.getOAuthRequestToken(function(error, oauthToken, oauthTokenSecret) 
    if (error) 
        console.log(error.data);
        response.send('Error getting OAuth access token');
     else 
        req.session.oa = oa;
        req.session.oauth_token = oauthToken;
        req.session.oauth_token_secret = oauthTokenSecret;
        return res.redirect(base_url + "/plugins/servlet/oauth/authorize?oauth_token=" + oauthToken);
    
);
);

如果有人对代码的任何部分感到困惑,您可以在此答案中添加评论。

【讨论】:

嗨,关于 oauth_callback:我应该提供什么 URL,我在 Jira-Admin 中的哪里配置该 URL?是 ApplicationURL 还是 Authorize URL 或其他? Jira 是否在接受请求后将浏览器转发到该 URL,或者 Jira 是否创建一个单独的连接,因此 URL 需要公开?将其设置为“oob”可以,但随后用户必须复制秘密...developer.atlassian.com/server/jira/platform/oauth

以上是关于使用 OAuth 和 Node.JS 对 JIRA REST API 进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

node.js 伊斯坦布尔和茉莉花设置

使用 passport.js 和 express.js (node.js) 制作安全的 oauth API

Jira OAuth - 无法创建应用程序链接

Jira OAuth - 无法创建应用程序链接

Node.js 护照 OAuth 2.0 身份验证:存储访问和刷新令牌的位置

oAuth 2.0 访问令牌验证 node.js