首页 > 解决方案 > GCP 下载/获取服务帐号密钥

问题描述

这就是我尝试在服务帐户下创建密钥的方式,以及当我尝试通过 serviceAccountKey.getPrivateKeyData 获取包含凭据文件的 base64 表示的 privateKeyData 时,该方法返回空,不确定我在这里做错了什么

任何人都可以在这里发光,

public void createServiceAccountKey(String serviceAccountName) 
      {
        ServiceAccountKey serviceAccountKey = null;
        try {
          initService();

          serviceAccountKey =
              service
                  .projects()
                  .serviceAccounts()
                  .keys()
                  .create(
                      "projects/-/serviceAccounts/"
                          + serviceAccountName
                          + "@"
                          + serviceAccountConfig.getProjectId()
                          + ".iam.gserviceaccount.com",
                      new CreateServiceAccountKeyRequest())
                  .execute();

          log.info("Created key under Service Account: {}", serviceAccountName);
          log.info("Service Account Private Data: ", serviceAccountKey.getPrivateKeyData());
          log.info("Service Account Key Type: ", serviceAccountKey.getKeyType());
          log.info("Service Account Key Type: ", serviceAccountKey.getKeyAlgorithm());

        } catch (IOException e) {
          log.error("Unable to create key under service account: {}", e.toString());
        }
      }

标签: javagoogle-cloud-platform

解决方案


根据GCP 文档 ,密钥的格式可能会因生成方式而异。

由于每种方法的格式不同,因此使用您计划在将来进行 API 调用时使用的相同方法生成密钥是最简单的。例如,如果您使用的是 gcloud,也可以使用 gcloud 生成您的密钥。要将密钥用于使用其他方法生成的一种方法(例如将 REST 生成的密钥与 gcloud 一起使用),您需要编辑密钥以匹配适当的格式

这可能会有所帮助,请查看您如何使用和生成密钥。


推荐阅读