使用 pkgcloud 在 OpenStack 中验证用户名和密码
Authenticate Username and Password in OpenStack with pkgcloud
我正尝试在 OpenStack 中调用 API 进行密码验证。这是我卷曲并获取访问令牌的 API:
Password authentication with unscoped authorization
我想在 NodeJS 中做同样的事情,但我有点困惑。我可以这样做吗,因为我在想,也许问题在于不可能这样做;然而,这是我一直在尝试的代码:
var pkgcloud = require('pkgcloud');
var client = pkgcloud.compute.createClient({
provider: 'openstack',
username: <username>,
password: <password>,
authUrl: 'http://<ip>:<port>/',
basePath: 'v3'
});
client.getFlavors(function (err, flavors) {
console.log("Error", err)
console.log("Flavors", flavors)
})
client.getServers(function (err, servers) {
console.log("Error", err)
console.log("Servers", servers)
})
getFlavors 和 getServers 函数 return 405 方法不允许 - 所请求的方法不允许 URL。
我的代码有什么问题?如果我必须为 getFlavors 或任何其他函数使用另一个 URL,我应该把它放在哪里?
首先,您应该通过 keystoneAUthVersion
明确设置 Keystone 版本,而不是指定 basePath: 'v3'
。像这样简单地设置 basePath
最终会导致错误的请求。
使用 v3 身份验证时,您需要在请求中提供 domainId
(或 domainName
)。
最后,您可能需要确保提供有效的 region
。
以下内容适用于我的 OpenStack 环境:
var pkgcloud = require('pkgcloud');
var client = pkgcloud.compute.createClient({
provider: 'openstack',
keystoneAuthVersion: 'v3',
authUrl: '...',
domainId: 'default',
username: 'lars',
password: '...',
region: 'my-region'
})
client.getFlavors(function (err, flavors) {
console.log("Error", err)
console.log("Flavors", flavors)
})
我按照 Iarsks 所说的做了,还添加了一个租户 ID,它运行良好。
这是我使用的配置:
var config = {
provider: 'openstack',
keystoneAuthVersion: 'v3',
authUrl: '...',
domainId: 'default',
username: <username>,
password: <password>,
region: <region name which is provided in the cloud.yaml file in OpenStack>,
tenantId: <the same as the Project ID>
}
我正尝试在 OpenStack 中调用 API 进行密码验证。这是我卷曲并获取访问令牌的 API: Password authentication with unscoped authorization
我想在 NodeJS 中做同样的事情,但我有点困惑。我可以这样做吗,因为我在想,也许问题在于不可能这样做;然而,这是我一直在尝试的代码:
var pkgcloud = require('pkgcloud');
var client = pkgcloud.compute.createClient({
provider: 'openstack',
username: <username>,
password: <password>,
authUrl: 'http://<ip>:<port>/',
basePath: 'v3'
});
client.getFlavors(function (err, flavors) {
console.log("Error", err)
console.log("Flavors", flavors)
})
client.getServers(function (err, servers) {
console.log("Error", err)
console.log("Servers", servers)
})
getFlavors 和 getServers 函数 return 405 方法不允许 - 所请求的方法不允许 URL。
我的代码有什么问题?如果我必须为 getFlavors 或任何其他函数使用另一个 URL,我应该把它放在哪里?
首先,您应该通过 keystoneAUthVersion
明确设置 Keystone 版本,而不是指定 basePath: 'v3'
。像这样简单地设置 basePath
最终会导致错误的请求。
使用 v3 身份验证时,您需要在请求中提供 domainId
(或 domainName
)。
最后,您可能需要确保提供有效的 region
。
以下内容适用于我的 OpenStack 环境:
var pkgcloud = require('pkgcloud');
var client = pkgcloud.compute.createClient({
provider: 'openstack',
keystoneAuthVersion: 'v3',
authUrl: '...',
domainId: 'default',
username: 'lars',
password: '...',
region: 'my-region'
})
client.getFlavors(function (err, flavors) {
console.log("Error", err)
console.log("Flavors", flavors)
})
我按照 Iarsks 所说的做了,还添加了一个租户 ID,它运行良好。
这是我使用的配置:
var config = {
provider: 'openstack',
keystoneAuthVersion: 'v3',
authUrl: '...',
domainId: 'default',
username: <username>,
password: <password>,
region: <region name which is provided in the cloud.yaml file in OpenStack>,
tenantId: <the same as the Project ID>
}