【问题标题】:Ansible Tower API call using OAuth2 Token from Nodejs App使用来自 Nodejs 应用程序的 OAuth2 令牌调用 Ansible Tower API
【发布时间】:2020-05-29 08:01:20
【问题描述】:

我们可以通过只传递 Oauth2 令牌而不传递用户名或密码来调用 Ansible Tower Api 吗?

(假设我想通过仅将 Oauth2 令牌传递给我的 nodejs 脚本来从 ansible Tower 获取我的库存。这可能吗?)

如果是,请分享该脚本的语法。

我使用的脚本给了我正确的输出,但它使用凭据作为用户名和密码,但我想通过仅传递 OAuth2 令牌(从我的用户名和密码生成)来完成相同的任务

var unirest = require('unirest');
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
var Request = unirest.get('http://<tower-host>/api/v2/inventories');

Request
   .auth({
    user: 'foo',
    pass: 'bar',
})
   .then(function (response) {
    var data = response.body;
    console.log(data);
  })

【问题讨论】:

标签: node.js oauth-2.0 ansible ansible-tower


【解决方案1】:

您可以简单地在标头中传递授权令牌。 这是一个示例函数:

const fetch = require('node-fetch');
function job_inventory(tower_url, token) {
    return fetch(tower_url+ "/api/v2/inventories", {
        method: "GET",
        headers: {
            "content-type": "application/json",
            "authorization": "Bearer " + token
        }
    });
}

【讨论】:

  • 我已经尝试过了,使用了多个标题、方法的排列,即使我得到了一个干净的令牌值,它也会给出这个错误:{“detail”:“没有提供身份验证凭据。到建立登录会话,访问 /api/login/。"} 非常感谢任何帮助。
  • 您确定要提供令牌吗?在函数中尝试 console.log 以确保
  • 嘿,谢谢。是的,我正在提供一个令牌。我在使用之前回显出该值,并且可以确认我得到了一个令牌和一个会话对象。当我回去使用它时,就会出现问题。谢谢您的帮助。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-19
  • 2021-12-26
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 2016-09-19
  • 1970-01-01
相关资源
最近更新 更多