gpt4 book ai didi

java - 使用托管标识在 Azure Key Vault 上设置 secret

转载 作者:行者123 更新时间:2023-12-03 07:03:02 29 4
gpt4 key购买 nike

我有一个使用 Java Springboot 的应用程序,并且我已经授予从我的托管身份到 KeyVault 的访问权限。

当我尝试使用 java 代码设置新密码时,出现以下错误:

"message":"Failed to set secret - secret-name \nStatus code 401,"{"error":{"code":"Unauthorized","message":"AKV10032:Invalid issuer. Expected one of

public void setAzureTokens() {
try{
SecretClient secretClient = new SecretClientBuilder()
.vaultUrl(keyVaultUri)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();

secretClient.setSecret(new KeyVaultSecret(key, value));

}
catch (Exception e){
LOG.error("Error during during token update", e);
}
}

我需要在 Application.properties 上设置有关租户、clientId 或我的托管身份的任何信息吗?

最佳答案

正如 @Alex 所说,这是一个跨租户问题;对于谁有权访问多个 Azure AD 租户,以及当用于访问 Key Vault 终结点的库无法决定使用哪个凭据对您进行身份验证时,就会出现此问题。

解决方案是告诉 DefaultCredentialProvider 要使用哪个租户,并且可以通过在 DefaultAzureCredentialOptions() 中传递的选项来完成。

var o = new DefaultAzureCredentialOptions();
o.VisualStudioTenantId = preConfig["AzureTenantId"];
configurationBuilder.AddAzureKeyVault(new Uri(preConfig["KeyVaultName"]), new DefaultAzureCredential(o));

Reference

(或)

您可以将 AZURE_TENANT_ID 设置为环境变量,并可在此处使用 > Azure Key Vault Secret client library for Java | Microsoft Docs

关于java - 使用托管标识在 Azure Key Vault 上设置 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72001791/

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