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