gpt4 book ai didi

java - Java 中是否有工作代码可与 Azure Keyvault 连接以使用托管服务身份检索 secret

转载 作者:行者123 更新时间:2023-12-02 06:04:15 25 4
gpt4 key购买 nike

我正在创建一个与 Azure keyvault 连接的应用程序,以使用托管服务身份检索其 secret 。

我尝试在不使用托管身份的情况下连接 keyvault,它有效,但使用 msi,我无法连接。我尝试过的一些事情:

1) 这段代码超时:

MSICredentials credentials = new MSICredentials(AzureEnvironment.AZURE);
log.debug("Credentials acquired");
KeyVaultClient keyVaultClient = new KeyVaultClient(credentials);
log.debug("Key Vault client created");
String secret =
keyVaultClient.getSecret("https://<key-vault-name>.vault.azure.net/",
"<secret-name>").value();

2) 这段代码在第一行本身抛出错误,表示端点==null。通过查看库意味着我需要提供 MSI_ENDPOINT,但我不确定它是什么。

AppServiceMSICredentials credentials = 
new AppServiceMSICredentials(AzureEnvironment.AZURE);

log.debug("Credentials acquired");

KeyVaultClient keyVaultClient = new KeyVaultClient(credentials);

log.debug("Key Vault client created");

String secret =
keyVaultClient.getSecret("https://<key-vault-name>.vault.azure.net/",
"<secret-name>").value();

如有任何帮助,我们将不胜感激。

最佳答案

我们可以使用AppServiceMsiCredential类来实现结果

您可以阅读有关参数 here 的所有内容

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");

为应用服务/任何资源启用 MSI 时,两个环境变量 MSI_ENDPOINTMSI_SECRET 可用(请注意,每次重新启动应用服务时它们都会更改)并可用于获取给定资源的访问 token 。

希望有帮助。

关于java - Java 中是否有工作代码可与 Azure Keyvault 连接以使用托管服务身份检索 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55951748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com