在 google 应用引擎上验证没有下载密钥的服务帐户

Authenticate service account without downloaded key on google app engine

我正在开发一个应该安装在 Google App Engine 中的产品。

在此,我使用服务帐户对 Gmail API、云端硬盘 API、日历 API 等进行身份验证

它使用下载的 P12 文件作为身份验证工作正常。但作为它的产品,我不希望客户端在每次安装时都在应用程序上下载和上传。

是否可以在没有私钥文件的情况下或在没有服务帐户的情况下使用 API 来验证它。

在下面的页面中提到有系统管理的密钥对由 Google 自动管理。有帮助吗?我没有找到任何例子。

https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts.keys

下面link建议对于Google Cloud Platform我应该使用Google Managed Key https://cloud.google.com/iam/docs/understanding-service-accounts

这个密钥可以在没有下载文件的情况下使用吗?

谢谢

我可以通过 IAM 实现 API https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts.keys

下面是Java它的代码

AppIdentityCredential credential = new AppIdentityCredential(
                Arrays.asList("https://www.googleapis.com/auth/cloud-platform"));
Iam iam = new Iam(httpTRANSPORT, jsonFACTORY, credential);
try {
    Iam.Projects.ServiceAccounts.Keys.Create keyCreate = iam.projects().serviceAccounts().keys()
                    .create("projects/myProject/serviceAccounts/myProject@appspot.gserviceaccount.com", new CreateServiceAccountKeyRequest());

    ServiceAccountKey key = keyCreate.execute();

} catch (IOException e) {
    System.out.println(e.getMessage());
}

任何密钥都可用于生成如下所示的 GoogleCredential

InputStream stream = new ByteArrayInputStream(key.decodePrivateKeyData());
GoogleCredential credential = GoogleCredential.fromStream(stream);