Прочитайте секрет хранилища ключей Azure через MSI в Java

Я пытаюсь прочитать секрет в хранилище ключей Azure с помощью идентификатора управляемой службы (MSI) в Java. Я хочу, чтобы токен получил доступ к хранилищу ключей через MSI.

Есть ссылки, доступные для.net, чтобы сделать это, но не нашел ничего в Java. Я не хочу делать это через идентификатор клиента / секретный ключ или сертификаты.

Я хочу что-то в Java, что близко к следующему.NET кода

using Microsoft.Azure.KeyVault;
using Microsoft.Azure.Services.AppAuthentication;

AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
try
{
    var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
    var secret = await keyVaultClient.GetSecretAsync("https://abcded.vault.azure.net/secrets/secretname/").ConfigureAwait(false);
    ViewBag.Secret = $"Secret: {secret.Value}"; 
}
catch (Exception exp)
{
    ViewBag.Error = $"Something went wrong: {exp.Message}";
}

1 ответ

import com.microsoft.azure.credentials.MSICredentials;

MSICredentials credentials = new MSICredentials(AzureEnvironment.AZURE);
KeyVaultClient keyVaultClient = new KeyVaultClient(credentials);
SecretBundle secret = keyVaultClient.getSecret("vaultbaseurl","secretName","secretversion");

Мы могли бы использовать AppServiceMSICredentials в Java. Пожалуйста, попробуйте использовать следующий код.

import com.microsoft.azure.AzureEnvironment;
import com.microsoft.azure.credentials.AppServiceMSICredentials;
import com.microsoft.azure.keyvault.KeyVaultClient;
import com.microsoft.azure.keyvault.models.KeyBundle;

AppServiceMSICredentials credentials = new AppServiceMSICredentials(AzureEnvironment.AZURE);
KeyVaultClient keyVaultClient = new KeyVaultClient(credentials);
keyVaultClient.getSecret("https://xxxx.vault.azure.net","secretName");
Другие вопросы по тегам