Search code examples
node.jsoracleauthenticationtokenoracle-cloud-infrastructure

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


I am unable to authenticate to oracle cloud using auth token.I am using "request" node module in node js to connect to oracle cloud using its REST endpoint.I am passing the authentication token in header and the response i am getting is"HTTP 401 Unauthorised".Dont know why it is happening.Any help is appreciated.


Solution

  • Here's an example that first obtains a token and then uses it for a subsequent request.

    Start by setting these environment variables:

    • OC_REST_ENDPOINT
    • OC_IDENTITY_DOMAIN
    • OC_USER
    • OC_PASSWORD

    For example:

    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
    

    Then use the following example:

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