Привет,
Я следую руководству здесь: https://docs.microsoft.com/en-us/azure/key-vault/secrets/quick-create-java
пытаюсь получить секрет из Key Vault в моем приложении Java.
При попытке инициализировать переменную SecretClient я получаю ошибку в бите учетных данных. Я вставил следующий код прямо из учебника в свой код (создал строковую переменную kvUri, указывающую на мое хранилище ключей):
SecretClient secretClient = new SecretClientBuilder().vaultUrl(kvUri).credential(new DefaultAzureCredentialBuilder().build()) .buildClient();
Я получаю красную строку ошибки в разделе «new DefaultAzureCredentialBuilder (). Build ()». При наведении курсора на него появляется сообщение:
"Обязательный тип: TokenCredential
Предоставлено: DefaultAzureCredential "
Я установил и импортировал следующие банки:
Лазурный-безопасность-keyvault-секреты-4.1.1.jar
лазурная идентичность-1.1.0-beta.7.jar
Операторы импорта:
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;
import com.azure.identity.DefaultAzureCredentialBuilder;
Есть идеи, что я могу сделать, чтобы это исправить?
Спасибо!
Спасибо за отправку этого вопроса, @ ronny-sphera. @ vcolin7 , @ g2vinay, не могли бы вы продолжить?
Привет, @ ronny-sphera, мне кажется, я не могу воспроизвести проблему, о которой вы упомянули. Вот код, который я использовал:
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;
import com.azure.security.keyvault.secrets.models.KeyVaultSecret;
import com.azure.security.keyvault.secrets.models.SecretProperties;
public class ListSecrets {
public static void main(String[] args) {
String keyVaultUrl = "https://<your-keyvault-name>.vault.azure.net/";
SecretClient secretClient = new SecretClientBuilder()
.vaultUrl(keyVaultUrl)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
System.out.println("Listing secrets");
for(SecretProperties secretProperties : secretClient.listPropertiesOfSecrets()) {
if (secretProperties.isEnabled()) {
KeyVaultSecret secret = secretClient.getSecret(secretProperties.getName());
System.out.printf("Secret name: %s, secret value: %s\n", secret.getName(), secret.getValue());
}
}
}
}
Я также использую следующие зависимости:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-security-keyvault-secrets</artifactId>
<version>4.1.1</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.1.0-beta.7</version>
</dependency>
Возможно, вы могли бы попытаться перестроить свой проект или запустить mvn clean install
в каталоге, где находится ваш файл POM.
Добавление зависимостей в pom и перезагрузка проекта maven, похоже, решили эту проблему - спасибо!