1

我正在研究應該安裝在Google App Engine中的產品。在谷歌應用引擎上驗證沒有下載密鑰的服務帳戶

在此我使用的服務帳戶用於驗證Gmail的API,驅動器API,日曆API等

其工作的罰款下載的P12文件作爲身份驗證。但作爲其產品,我不希望客戶端在每次安裝時都下載並上傳應用程序。

有沒有辦法可以驗證它沒有私人密鑰文件或使用該API沒有服務帳戶。

在下面的頁面中提到,系統管理的密鑰對由Google自動管理。它可以幫助嗎?我沒有找到任何例子。

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

在以下鏈接它表明,對於谷歌雲平臺,我應該使用谷歌託管的關鍵 https://cloud.google.com/iam/docs/understanding-service-accounts

可以不用下載的文件,使用該鍵?

感謝

+0

你不必使用p12文件,你也可以使用json密鑰文件。 – DaImTo

+0

@DaImTo感謝您的評論。它知道任何一個文件都可以使用,但它不會解決問題。我只是不想讓用戶在應用程序中創建密鑰並上傳文件。至少如果有辦法使用API​​在服務器上直接創建密鑰並下載文件。這將有所幫助。 – compyutech

回答

1

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

下面實現它是因爲它

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/[email protected]", new CreateServiceAccountKeyRequest()); 

    ServiceAccountKey key = keyCreate.execute(); 

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

Java代碼任意鍵可用於生成GoogleCredential如下

InputStream stream = new ByteArrayInputStream(key.decodePrivateKeyData()); 
GoogleCredential credential = GoogleCredential.fromStream(stream); 
相關問題