【发布时间】:2014-06-08 18:48:30
【问题描述】:
我正在通过服务帐户使用 Google Directory API,并且在创建服务帐户时收到了 pkcs12 密钥。
Google 确实支持两种不同的方式来使用它,将密钥设为 java.io.File 或 java.security.PrivateKey,对于 PoC,我使用了第一种方式,即使用 java.io.File 创建 GoogleCredential 对象,
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(serviceAccountId)
.setServiceAccountScopes(Arrays.asList(DirectoryScopes.ADMIN_DIRECTORY_USER))
.setServiceAccountUser(serviceAccountUser)
.setServiceAccountPrivateKeyFromP12File(serviceAccountPrivateKeyFile)
.build();
它按预期工作,但在我的实际用例中,我不能依赖文件系统,所以我不能使用第一种方法。所以我想用第二种方式实现实际用例,即使用java.security.PrivateKey,完成后看起来像下面这样。
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(serviceAccountId)
.setServiceAccountScopes(Arrays.asList(DirectoryScopes.ADMIN_DIRECTORY_USER))
.setServiceAccountUser(serviceAccountUser)
.setServiceAccountPrivateKey(serviceAccountPrivateKey)
.build();
我是我的用例,我需要上传私钥并使用 base64 编码将其存储在数据库中。现在我需要传递pkcs12 键的内容并创建Googlecredential 对象。要做到这一点,我认为第二个选项是最合适的方式,但找不到任何示例来从上传的密钥的 base64 编码内容创建 java.security.PrivateKey。
是否可以从 pkcs12 键的 base64 编码内容创建 java.security.PrivateKey 对象?
或者还有其他方法可以实现我的用例吗?
提前致谢
达雷
【问题讨论】:
标签: java google-api-java-client private-key google-admin-sdk pkcs#12