我正在为智能电视创建一个JavaScript应用程序,以便在电视上显示仪表板。 我获得了使用JIRA REST API的仪表板列表。我用它的网址是:
jira/rest/api/2/dashboard?startAt=&maxResults=
之后我创建了一个墙板,然后在电视上显示它们:
jira/plugins/servlet/Wallboard/?dashboardId=&os_username=&os_password=
由于os_username
和os_password
,JIRA知道我已经过身份验证并获得了正确的列表。这个列表是我从一开始就需要的,但因为我用参数os_username
和os_password
调用上面的url,它确实得到了正确的列表
但是在启动电视时/第一次使用JIRA获得仪表板列表时,没有人进行过身份验证,因此它需要一个随机列表,而不是我需要的列表。
有一些方法可以使用以下命令在JIRA中进行身份验证:
curl -D- -u fred:fred -X GET -H "Content-Type: application/json" http://example.com/rest/api/2/issue/createmeta
但我不知道如何在JavaScript中使用该命令。
所以任何人都可以告诉我如何使用基本身份验证在JIRA中进行身份验证,而且非常重要的是它应该是JAVASCRIPT。
答案 0 :(得分:20)
我认为你从here得到了这个。在同一页面上,它解释了如何“自己动手”。我将“翻译”您需要执行的步骤,以便设法在JS中执行相同的请求。
对于Authorization标题:
所以最后你需要使用提供的两个Header来提出你的GET请求,你应该被授权。另外 BEWARE Base64是可反转的而不是加密功能。它是编码。当然,请求将通过HTTPS,但如果SSL中断,Base64编码的字符串可能会被反转。
答案 1 :(得分:3)
如果您拥有自己的JIRA实例,则应将您的网站列入白名单,以便首先为您的域启用CORS:
如果您是JIRA Server客户,只需转到"白名单" JIRA管理部分,并添加您希望从中请求资源的域。
否则您的请求将以错误结束,因为它违反了浏览器的同源政策(http://enable-cors.org/)。
重要:如果您正在使用JIRA on demand / cloud,则无法使用纯JavaScript /客户端代码使用基本身份验证成功访问API。这是由于security reasons,不幸的是,Atlassian团队似乎还没有解决方案。解决这个问题的一个解决方案可能是在您的服务器上设置代理,该代理将您的JavaScript请求从浏览器转发到实际的JIRA实例。
为避免因代码中的错误而导致的任何问题,我强烈建议您尝试使用CURL作为第一步访问JIRA API:
curl -D- -X GET -H "Authorization: Basic %BASE64-CREDENTIDALS%" -H "Content-Type: application/json" "https://webjets.atlassian.net/rest/api/2/issue/WJ-333"
请注意,您必须将%BASE64-CREDENTIDALS%替换为您实际的Base64编码用户/密码对。重要的是要知道,这只适用于JIRA用户名,而不适用于JIRA用户的电子邮件地址。这可能会令人困惑,因为通常您也可以使用电子邮件地址登录JIRA,但不能使用API。
在将您的域名列入白名单后,您就可以开始了 - 使用以下详细信息构建 GET 请求:
Content-Type: application/json
首先通过 Base64 编码用户名和密码添加基本身份验证标头:
var authCode = window.btoa( user + ":" + password );
var authHeader = "Authorization: Basic " + authCode;
在JIRA API端点URL上执行请求,例如:
请参阅StackOverflow问题" How to use Basic Auth with jQuery and AJAX?"有关如何使用jQuery执行请求的方法。
安全通知:请注意,授权码不是加密值,而是编码。小心存放或提供它的地方!