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

如何通过自定义Credentials结构体实现C++版GCS客户端身份验证?

使用自定义HMAC密钥认证GCS C++客户端

你的自定义credentials结构体不能直接传入UnifiedCredentialsOption,因为GCS C++客户端库需要使用官方提供的凭证类型处理认证。你的access_key和secret_key属于GCS的HMAC密钥,对应库中的google::cloud::storage::HmacKeyCredentials类,以下是具体实现方式:

实现代码

将自定义凭证结构体转换为官方HMAC凭证对象后,再传入客户端构造函数:

#include <google/cloud/storage/client.h>
#include <google/cloud/storage/hmac_key_credentials.h>

// 你的自定义凭证结构体
struct credentials {
  std::string bucket;
  std::string access_key;
  std::string secret_key;
};

int main() {
  credentials my_creds{
      "your-bucket-name",
      "your-hmac-access-key",
      "your-hmac-secret-key"
  };

  // 创建HMAC凭证实例
  auto hmac_creds = google::cloud::storage::HmacKeyCredentials::Create(
      my_creds.access_key, my_creds.secret_key);

  // 配置客户端选项并初始化GCS客户端
  auto options = google::cloud::Options{}.set<google::cloud::UnifiedCredentialsOption>(
      std::move(hmac_creds));
  auto client = google::cloud::storage::Client(options);

  // 示例:验证客户端可用性,列出目标桶内的对象
  for (auto const& object : client.ListObjects(my_creds.bucket)) {
    if (!object) {
      std::cerr << object.status() << "\n";
      return 1;
    }
    std::cout << object->name() << "\n";
  }

  return 0;
}

关键说明

  • HmacKeyCredentials::Create是库提供的工厂方法,专门用于生成HMAC认证所需的凭证实例,参数为你的HMAC密钥对。
  • 必须通过UnifiedCredentialsOption将凭证实例绑定到客户端选项中,这是当前GCS C++客户端统一的凭证配置入口。
  • 确保你的HMAC密钥拥有对应GCS操作的权限(如桶的读写、对象管理等),否则会返回权限错误。

安全提示

虽然你要求硬编码凭证,但生产环境中强烈建议避免这种做法,可从安全配置管理系统读取密钥,防止密钥泄露风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 14:14:57