You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenStack curl是否支持v3applicationcredential认证?如何实现?

问题描述

我们已知可通过用户名/密码从OpenStack获取token,再用curl携带该token发送请求替代命令行操作,但脚本中明文存储密码存在泄露风险。

目前可在openrc文件中配置v3applicationcredential进行OpenStack API认证,示例如下:

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获取token时采用的是password认证方式,示例请求如下:

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"

在已列出的认证插件中未找到v3applicationcredential:

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

但OpenStack官方文档显示v3applicationcredential认证方式是受支持的,因此想咨询:能否通过curl使用v3applicationcredential认证方式获取token?若可以,具体如何操作?


回答

完全可以通过curl使用v3applicationcredential认证方式获取OpenStack token,具体操作如下:

1. 构造curl请求

使用application_credential作为认证方法,请求体中传入你的应用凭证ID和密钥,示例命令如下:

curl -i \
  -H "Content-Type: application/json" \
  -d '
{ "auth": {
    "identity": {
      "methods": ["application_credential"],
      "application_credential": {
        "id": "975b3757b0704babac512ca9a80aeaa2",
        "secret": "MKVHS88mDv0W1KhiGQL9__UsHNuTVVfFaR-oweW-liVmljt8VkcJw4FUcA2MxAPn5ndEB__GqgwTYpV8oBWFLQ"
      }
    }
  }
}' \
  "https://identity-3.la-br-1.cloud.sap/v3/auth/tokens"

2. 关键参数说明

  • methods: 指定为["application_credential"],明确采用应用凭证认证逻辑
  • application_credential.id: 对应openrc文件中的OS_APPLICATION_CREDENTIAL_ID
  • application_credential.secret: 对应openrc文件中的OS_APPLICATION_CREDENTIAL_SECRET
  • 请求URL直接使用openrc中的OS_AUTH_URL拼接/auth/tokens路径

3. 关于认证插件列表的补充说明

你列出的插件中没有看到v3applicationcredential相关项,是因为该认证方式对应的插件实际全名为keystone.auth.plugins.application_credential.ApplicationCredential,可能是你查询的插件列表不全(比如对应Keystone版本较旧,或查询方式遗漏了该插件)。但这不影响通过API直接调用该认证方式,只要你的OpenStack云环境已开启应用凭证功能即可正常使用。

4. token的后续使用

请求成功后,响应头中的X-Subject-Token字段即为所需的认证token。后续调用OpenStack其他API时,只需在请求头中添加X-Auth-Token: <获取到的token>即可完成身份验证。


内容的提问来源于stack exchange,提问作者EisenWang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 05:05:19