2017-07-27 48 views
0

我无法使用身份验证令牌对oracle云进行身份验证。我使用节点js中的“请求”节点模块使用其REST端点连接到Oracle云。我在标头中传递身份验证令牌,并且我得到的响应是“HTTP 401未经授权”。不知道为什么会发生。任何帮助表示赞赏。如何使用身份验证令牌对oracle云ipnetwork API进行身份验证?

+0

你打哪个端点?你能告诉我们一些代码吗?你有没有读过这个? http://docs.oracle.com/en/cloud/paas/database-dbaas-cloud/csdbr/security-authentication-authorization.html –

+0

您好Dan REST端点在Oracle云服务选项中可用。我使用的代码is- request({“method:”POST“”RESTendpoint/Compute-identitydomain/network/v1/ipnetwork,body:{“name”:{ipnetwork name}},headers:{“Cookie”:token,content-键入}},{回调函数})。 –

+0

你见过这个吗? http://docs.oracle.com/en/cloud/iaas/compute-iaas-cloud/stcsa/SendRequests.html请注意,这些网址包含必须用您的信息(包括身份网域)替换的部分。请以“https://”开头,告诉我您尝试点击的完整网址(只需将您的真实身份网域替换为假冒网址)。 –

回答

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

    } 
); 
+0

你的答案work..Thanks man .......你摇滚.. –