0

我无法使用身份验证令牌对 Oracle 云进行身份验证。我在节点 js 中使用“请求”节点模块使用其 REST 端点连接到 Oracle 云。我在标头中传递身份验证令牌,我得到的响应是“HTTP 401 Unauthorized”。不知道为什么会这样。感谢任何帮助。

4

1 回答 1

1

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

首先设置这些环境变量:

  • 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);
      }
    );

  }
);
于 2017-07-29T19:27:17.120 回答