java - 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());
}
}
解决方案
根据GCP 文档 ,密钥的格式可能会因生成方式而异。
由于每种方法的格式不同,因此使用您计划在将来进行 API 调用时使用的相同方法生成密钥是最简单的。例如,如果您使用的是 gcloud,也可以使用 gcloud 生成您的密钥。要将密钥用于使用其他方法生成的一种方法(例如将 REST 生成的密钥与 gcloud 一起使用),您需要编辑密钥以匹配适当的格式
这可能会有所帮助,请查看您如何使用和生成密钥。
推荐阅读
- javascript - 为端点应用 JWT Guard,但当它有请求参数时不应用它
- javascript - React useState:切换对象内部的布尔属性-如何识别onClick源?
- c - 在while循环中使用时如何访问scanf的返回值?
- python - 如何从 2 个类继承而无需更改原始类?
- android - 理解 shouldShowRequestPermissionRationale
- c# - Nuget SurveyMonkeyApi SSL/TLS 连接问题
- winapi - 如何将Win32 App的背景颜色初始化为白色以外的颜色以避免ShowWindow上的闪烁?
- php - Laravel 中的 AWS 外观无法正确实例化 CloudSearch 类
- javascript - Fetch() 数据未显示在服务器端
- android - 亚行离线和缺失的问题