使用 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 进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章
使用 passport.js 和 express.js (node.js) 制作安全的 oauth API