【发布时间】:2020-08-20 15:55:41
【问题描述】:
我正在尝试从 .Net 4.5 控制台应用程序上的 Azure keyVault 获取机密,我关注了This tuto,但我收到了标题中提到的错误请求错误。我不得不提到我的控制台应用程序是新创建的,并且正在使用属于另一个 .Net 核心 web api 的 clientId 和 ClientSecret,该 api 能够成功获取机密,但在我的控制台应用程序中并非如此。请在下面找到正在使用的代码,在client.GetSecretAsync(vaultAddress,SecretName)的指令下抛出异常:
static void Main(string[] args)
{
Console.WriteLine($"Secret Value from Vault is: { GetVaultValue()}");
//DoVault();
Console.ReadLine();
}
static string GetVaultValue()
{
KeyVaultClient client = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetToken));
var vaultAddress = "https://VaultName.vault.azure.net/";
var secretName = "storageName:NameAccount";
var secret = client.GetSecretAsync(vaultAddress, secretName).GetAwaiter().GetResult();
return secret.Value;
}
static async Task<string> GetToken(string authority, string resource, string scope)
{
var clientId = "This-IS-ID";
var clientSecret = "THIS-iS-my-Secret";
ClientCredential credential = new ClientCredential(clientId, clientSecret);
var context = new AuthenticationContext(authority, TokenCache.DefaultShared);
var result = await context.AcquireTokenAsync(resource, credential);
return result.AccessToken;
}
【问题讨论】:
-
如果您没有正确的权限会出现此错误
-
@Sajeetharan 谢谢你的评论,我会调查的
-
让我们知道结果
-
请分享您的代码。并指出错误发生在哪里。
-
KeyVaultClient 已被弃用,取而代之的是 SecretClient,可在我们的新包 Azure.Security.KeyVault.Secrets 中使用。我们还将 KeyClient 和 CertificateClient 拆分为单独的包。有关详细信息,请参阅 aka.ms/valueprop 和 aka.ms/intro。与 Azure.Identity 中的 DefaultAzureCredential 一起使用,这些更易于使用,并且不需要从开发环境更改代码到生产环境。
标签: c# .net azure console-application azure-keyvault