正如我们所知,我们可以从 openstack 中检索带有用户/密码的令牌,然后使用此令牌将带有“curl”的请求而不是命令发送到 openstack。 并且——为了检索该令牌,我们通常使用用户/密码来获取它。但是如果是用脚本登录的话,会有密码泄露的风险…… 同时,我们可以使用 v3applicationcredential 进行 openstack API 身份验证——例如。在 openrc 文件中,我们可以把它放在 --
vsa11061573:/home/i331281/loadbalancer/openrc # cat secret_NEO-LA-BR-1-FACTORYBR1
export OS_AUTH_URL=https://identity-3.la-br-1.cloud.sap/v3
export OS_AUTH_TYPE=v3applicationcredential
export OS_REGION_NAME=la-br-1
export OS_APPLICATION_CREDENTIAL_ID=975b3757b0704babac512ca9a80aeaa2
export OS_APPLICATION_CREDENTIAL_SECRET=MKVHS88mDv0W1KhiGQL9__UsHNuTVVfFaR-oweW-liVmljt8VkcJw4FUcA2MxAPn5ndEB__GqgwTYpV8oBWFLQ
但是要使用curl来执行openstack操作,我们需要像这样用AUTH获取token --
curl -i \
-H "Content-Type: application/json" \
-d '
{ "auth": {
"identity": {
"methods": ["password"],
"password": {
"user": {
"name": "user00001",
"domain": { "name": "mydomain" },
"password": "password0000011111"
}
}
},
"scope": {
"project": {
"name": "myproject",
"domain": { "name": "mydomain" }
}
}
}
}' \
"https://identity-3.eu-de-1.cloud.sap/v3/auth/tokens"
这里的auth方法是“Password”,在支持的列表中--
keystone.auth.plugins.external.Base
keystone.auth.plugins.mapped.Mapped
keystone.auth.plugins.oauth1.OAuth
keystone.auth.plugins.password.Password
keystone.auth.plugins.token.Token
keystone.auth.plugins.totp.TOTP
我找不到 v3applicationcredential——但是来自 https://docs.openstack.org/keystone/queens/user/application_credentials.html 我们可以看到——支持这种 v3applicationcredential 身份验证方法。所以问题来了——我们可以使用这个 v3applicationcredential 身份验证方法通过 curl 检索令牌吗?如果是,如何获得它? 预先感谢您的帮助。
问候 艾森
是的,您可以使用 curl 执行 openstack 命令行可以执行的所有操作,因为在这两种情况下它们都是 HTTP 请求。
方法的名称是
application_credential
,所需的属性是id
和secret
。不需要范围,因为范围信息已包含在应用程序凭据中。
将该信息插入到您提供的示例中,我们得到:
curl -i \
-H "Content-Type: application/json" \
-d '
{ "auth": {
"identity": {
"methods": ["application_credential"],
"application_credential": {
"id": "<ID>",
"secret": "<SECRET>"
}
}
}
}' \
"https://identity-3.eu-de-1.cloud.sap/v3/auth/tokens"