我正在尝试从本地web中使用KeyVault库从Azure.Identity中检索机密信息。但它抛出了无效的发行者。在下面给出我使用的代码
我的当前代码
var client = new SecretClient(new Uri("key-vault-url"), new DefaultAzureCredential()); ==> line #1
var secret = client.GetSecret("DicomSecret").Value; ==> line #2
一旦它解析了line#2,它就会抛出以下错误。
我已经尝试过的
我还读到我可以使用EnvironmentCredential,我需要为它提供AZURE_TENANT_ID、AZURE_CLIENT_ID、AZURE_CLIENT_SECRET,但我不太清楚该如何使用,也不知道应该包含什么内容--我没有访问AAD的权限。
请告诉我如何解决这个问题。
发布于 2021-08-13 16:24:46
由于我试图从本地开发环境(VS 2019年)连接到Azure,所以它希望获得更多的凭据。
因此,在我的dev环境(localhost)中,我必须使用DefaultAzureCredentialOptions VisualStudioTenantId和SecretClient。
var tenantId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
DefaultAzureCredentialOptions options = new DefaultAzureCredentialOptions()
{
VisualStudioTenantId = tenantId,
SharedTokenCacheTenantId = tenantId
};
var client = new SecretClient(
new Uri(key-vault-url),
new DefaultAzureCredential(options)
);
上面的这些帮助我从本地执行,但是在将它部署到Azure Ap服务之后,下面的代码行就足够了。因此,我只在本地测试中使用了上述代码。
var client = new SecretClient(new Uri("key-vault-url"), new DefaultAzureCredential());
发布于 2021-08-05 02:05:00
这是我的代码,似乎和你的没什么区别。
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Identity.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace test0430callingapi.Controllers
{
public class HelloController : Controller
{
public async Task<string> IndexAsync()
{
const string secretName = "clientsecret";
var kvUri = "https://keyvaultname.vault.azure.net/";
var a = new DefaultAzureCredential();
var client = new SecretClient(new Uri(kvUri), a);
var secret = await client.GetSecretAsync(secretName);
string secretVaule = secret.Value.Value;
return secretVaule ;
}
}
}
那么我想你可以试着检查一下DefaultAzureCredential。在视觉演播室中运行代码时,我们需要确保您已经与具有访问权限的用户进行了登录,用户可以通过在门户中添加访问策略来访问密钥库。或者您已经添加了用户,那么您可以检查是否为用户添加了足够的权限。
如果它也失败了,您可以尝试另一种通过api访问密钥库的方法。您可以参考这个答案的更多细节。
https://stackoverflow.com/questions/68645803
复制相似问题