【问题标题】:How can I get the secrets in node js application code for already initialized vault?如何获取已初始化保管库的节点 js 应用程序代码中的秘密?
【发布时间】:2021-02-06 20:16:36
【问题描述】:

我有 app-id、user-id 和 nonce,但没有 vault-token。如何获取保险库令牌,以便我可以使用读取 API 动态访问节点应用程序中的机密。我已经保存了数据库凭据,我将在呈现页面时使用它来连接。下面是我的代码:


var options = {
  apiVersion: 'v1',
  user_id: 'abc',
  app_id: 'pqr',
  endpoint: 'https://abcpqr.com:8200', // default
};

var vault = require("node-vault")(options);
vault.health().then ( (result) => {
  var isServerInitialized = result.initialized;
  console.log("isServerInitialized :: " + isServerInitialized);

  if (isServerInitialized) {
    vault.read('/v1/secret/mydb/db/root').then((readResponse) => {
      console.log("readResponse ::" + readResponse.data.value);
    }
    ).catch((readError) => console.error("readError:",readError));
  }
});

下面是我得到的错误:

[0] > node index.js
[0]
[1]
[1] > webapps@0.1.0 start C:\Users\userid\app\webapps
[1] > react-scripts start
[1]
[0] options :: [object Object]
[0] listening to Port 4000
[0] isServerInitialized :: true
[0] readError: ApiResponseError: missing client token
[0]     at handleVaultResponse (C:\Users\userid\app\webapps\node_modules\node-vault\src\index.js:58:21)
[0]     at processTicksAndRejections (internal/process/task_queues.js:97:5) {

【问题讨论】:

    标签: node.js hashicorp-vault


    【解决方案1】:

    完成vault.init() 后,令牌在响应中可用;

    vault.init({ secret_shares: 1, secret_threshold: 1 })
    .then((response) => {
      vault.token = response.root_token;
    })
    

    【讨论】:

    • 嘿@jokarls,我的保险库已经初始化,所以如果我再次使用该API,它会抛出错误,因为它已经初始化。请问您还有什么其他 API 可以获取令牌吗?
    • 我可以继续使用请求回调。不过,谢谢您的投入。
    猜你喜欢
    • 1970-01-01
    • 2021-06-06
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    相关资源
    最近更新 更多