我通過服務帳戶使用Google Directory API,並在服務帳戶創建時收到pkcs12
密鑰。如何將Base64編碼的pkcs12內容轉換爲java.security.PrivateKey?
谷歌不支持兩種不同的方式來使用它作爲考慮重點爲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。
是否有可能創建java.security.PrivateKey
對象來自base34編碼的內容pkcs12
的關鍵?
或者有沒有其他的方式來實現我的用例?
在此先感謝
DarRay