如何在JavaScript中使用JIRA REST API的基本身份验证?

如何在JavaScript中使用JIRA REST API的基本身份验证?,javascript,authentication,curl,jira,basic-authentication,Javascript,Authentication,Curl,Jira,Basic Authentication,我正在为智能电视创建一个JavaScript应用程序,用于在电视上显示仪表盘。 我得到了带有jirarestapi的仪表盘列表。我为此使用的url是: jira/rest/api/2/dashboard?startAt=&maxResults= 之后,我创建了一个墙板,如下所示,在电视上显示: jira/plugins/servlet/Wallboard/?dashboardId=&os_username=&os_password= 由于os\u用户名和os\u密码,

我正在为智能电视创建一个JavaScript应用程序,用于在电视上显示仪表盘。 我得到了带有jirarestapi的仪表盘列表。我为此使用的url是:

jira/rest/api/2/dashboard?startAt=&maxResults=
之后,我创建了一个墙板,如下所示,在电视上显示:

jira/plugins/servlet/Wallboard/?dashboardId=&os_username=&os_password=
由于
os\u用户名
os\u密码
,JIRA知道我已通过身份验证并获得了正确的列表。这个列表是我从一开始就需要的,但是因为我使用参数
os\u username
os\u 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。

我想这是您从中获得的。在同一页上还解释了如何“自己做”。我将“翻译”您需要执行的步骤,以便在JS中处理相同的请求

  • 请求方法应为GET
  • 您应该有2个标题:。 您的内容类型标题应如下所示: “内容类型:应用程序/json”
  • 对于授权标头:

  • 构建一个字符串,格式为用户名:密码
  • 对字符串进行编码(使用和)-实际上不需要第二个字符串,但我把它放在那里作为参考
  • 提供一个“Authorization”标题,其内容为“Basic”,后跟编码字符串。例如,字符串“fred:fred”在base64中编码为“ZnJlZDpmcmVk”,因此您的授权头应该如下所示: “授权:基本ZnJlZDpmcmVk”

  • 因此,最后您需要使用提供的两个标头发出GET请求,并且您应该获得授权。另外,Base64是可反转的,不是加密功能。它是编码。请求当然会通过HTTPS进行,但是如果SSL被破坏,Base64编码的字符串可以反转。

    如果您有您自己的JIRA实例您应该将您的站点列入白名单,以便首先为您的域启用CORS:

    如果您是JIRA服务器客户,只需转到JIRA管理的“白名单”部分,添加您希望从中请求资源的域

    否则,您的请求将以错误结束,因为它违反了浏览器的同源策略()

    重要信息:如果您使用JIRA on demand/cloud,您将无法使用纯JavaScript/客户端代码通过基本身份验证成功访问API。这是由于,不幸的是,Atlassian团队似乎还没有提供解决方案。解决此问题的一个解决方案是在您的服务器,它将您的JavaScript请求从浏览器转发到实际的JIRA实例

    为了避免由于代码中的bug而可能出现的任何问题,我强烈建议首先尝试使用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-Credentials%替换为实际的BASE64编码用户/密码对。重要的是要知道,这仅适用于JIRA用户名,而不适用于JIRA用户的电子邮件地址。这可能会造成混淆,因为通常您也可以使用电子邮件地址在JIRA登录,但不适用于API

    将您的域列入白名单后,您就可以开始了-构建一个包含以下详细信息的GET请求:

  • 添加内容类型标题:
    content-type:application/json
  • 通过对用户名和密码进行第一次编码,添加基本身份验证头:

    var authCode=window.btoa(用户+”:“+密码);
    var authHeader=“授权:基本”+authCode;

  • 在JIRA API端点URL上执行请求,如:

  • 有关如何使用jQuery执行请求的方法,请参见StackOverflow问题“”


    安全注意事项:请注意,授权码不是加密值,而是一种编码。请注意存储或提供它的位置!

    应该获取请求方法,可能是因为JIRA不支持put或post方法?您是否尝试过您在此处建议的方法。它似乎对我不起作用。请稍后再试指望