如何使用身份验证令牌对 oracle cloud ipnetwork API 进行身份验证?

how to authenticate to oracle cloud ipnetwork API using auth token?

我无法使用 auth 对 oracle 云进行身份验证 token.I 我正在使用节点 js 中的 "request" 节点模块使用其 REST 连接到 oracle 云 endpoint.I 正在传递身份验证令牌在 header 中,我得到的回复是 "HTTP 401 Unauthorised"。不知道为什么会 happening.Any 感谢帮助。

这是一个首先获取令牌然后将其用于后续请求的示例。

首先设置这些环境变量:

  • OC_REST_ENDPOINT
  • OC_IDENTITY_DOMAIN
  • OC_USER
  • OC_PASSWORD

例如:

export OC_REST_ENDPOINT=https://api-z999.compute.us0.oraclecloud.com/
export OC_IDENTITY_DOMAIN=myIdentityDomain
export OC_USER=some.user
export OC_PASSWORD=supersecretpassword

然后使用下面的例子:

const request = require('request');
const restEndpoint = process.env.OC_REST_ENDPOINT;
const identityDomain = process.env.OC_IDENTITY_DOMAIN;
const user = process.env.OC_USER;
const password = process.env.OC_PASSWORD;

request(
  {
    method: 'POST',
    uri: restEndpoint + 'authenticate/',
    headers: {
      'content-type': 'application/oracle-compute-v3+json',
    },
    body: JSON.stringify({ // Must be a string, buffer or read stream
      user: '/Compute-' + identityDomain + '/' + user,
      password: password
    })
  },
  function(err, res, body) {
    if (err) {
      console.log(err);
      return;
    }

    if (res.statusCode !== 204) {
      console.log('Something broke.');
      return;
    }

    console.log('Got auth token');

    let token = res.headers['set-cookie'][0];

    request(
      {
        method: 'GET',
        uri: restEndpoint + 'instance/',
        headers: {
          'accept': 'application/oracle-compute-v3+directory+json',
          'cookie': token
        }
      },
      function(err, res, body) {
        if (err) {
          console.log(err);
          return;
        }

        console.log(body);
      }
    );

  }
);