Hubot基本身份验证REST调用

时间:2016-01-27 10:30:49

标签: rest http authentication jira hubot

使用Hubot我试图通过JIRA REST api访问特定问题。

url = http://myserver.com/jira/rest/api/2/search?jql=status="open"+AND+assignee=null
robot.http(url).get() (err, res, body) ->
   # some code

Hubot无法访问服务器。代理都设置正确。 REST api在登录后通过浏览器按预期工作

因此我需要指定身份验证。

到目前为止我尝试过的(普通基本身份验证):

robot.http(url).auth('user', 'pass'). ...

robot.http(url).header('Authentication', 'user:password'). ...

robot.http('http://user:password@someurl'). ...

Hubot一直告诉我找不到服务器。 如何通过http正确传递身份验证?

2 个答案:

答案 0 :(得分:1)

这是来自hubot-confluence plugin的摘录。对于使用Jira进行身份验证应该是相同的。这是基本的访问身份验证。你可以查找btoa方法,但是将二进制转换为base64编码为ascii。据我所知,已经有很多脚本可以连接到带有hubot的Jira。

make_headers = ->
  user = nconf.get("HUBOT_CONFLUENCE_USER")
  password = nconf.get("HUBOT_CONFLUENCE_PASSWORD")
  auth = btoa("#{user}:#{password}")

  ret =
    Accept: "application/json"
    Authorization: "Basic #{auth}"

你可以正确地进行robot.http调用

headers = make_headers()
robot.http(url)
.headers(headers)
.get() (error, response, body) ->

答案 1 :(得分:0)

我认为你需要以正确的格式获得基本的身份证明。

user = process.env.DNSIMPLE_USERNAME
pass = process.env.DNSIMPLE_PASSWORD
auth = 'Basic ' + new Buffer(user + ':' + pass).toString('base64')

然后你需要传递

中的auth变量
robot.http(url)
  .headers(Authorization: auth, Accept: 'application/json')
  .get() (err, res, body) ->
    #some code