Я хочу зашифровать и расшифровать значения сына с помощью google cloud kms
, и я использую этот код в качестве примера https://github.com/GoogleCloudPlatform/java-docs-samples/blob/master/kms/src/main/java/com/example/CryptFile.java
try (KeyManagementServiceClient client = KeyManagementServiceClient.create()) {
// The resource name of the cryptoKey
String resourceName = CryptoKeyName.format(projectId, locationId, keyRingId, cryptoKeyId);
// Encrypt the plaintext with Cloud KMS.
EncryptResponse response = client.encrypt(resourceName, ByteString.copyFrom(plaintext));
// Extract the ciphertext from the response.
return response.getCiphertext().toByteArray();
}
Когда код выполняет строку client.encrypt(resourceName, ByteString.copyFrom(plaintext));
, он зависает, и яя не получаю никакого ответа.
Если я использую команду gcloud
для шифрования / дешифрования, она работает.
Я запускаю свое приложение по стандарту App Engine
(runtime java8) и зависимости, которую я используюis
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-kms</artifactId>
<version>1.29.0</version>
</dependency>
Я сделал некоторые изменения в своем коде для получения учетных данных:
AppIdentityService appIdentityService = AppIdentityServiceFactory.getAppIdentityService();
GoogleCredentials credentials = AppEngineCredentials.newBuilder().setScopes(Arrays.asList("https://www.googleapis.com/auth/cloudkms")).
setAppIdentityService(appIdentityService).build();
FixedCredentialsProvider credentialsProvider = FixedCredentialsProvider.create(credentials);
KeyManagementServiceSettings kmsSettings = KeyManagementServiceSettings.newBuilder().setCredentialsProvider(credentialsProvider).build();
try (KeyManagementServiceClient client = KeyManagementServiceClient.create(kmsSettings)) {
Но я всегда получаю сообщение «НЕАУТЕНТИФИЦИРОВАНО: Сбой при вычислении метаданных учетных данных».
ЛюбойПомогите? Пожалуйста, дайте мне знать, если я что-то упустил здесь.
С уважением