c# - 获取 Azure Key Valut 机密,返回 null/Not Found/Ojbect 未设置
问题描述
上个月能够在我的移动应用程序中获取密钥。但是,它已停止工作。我尝试了在网上找到的所有不同的解决方案,每个都返回不同的结果。
这是代码:
var keyClient = new KeyVaultClient(async (authority, resource, scope) =>
{
var adCredential = new Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential(CLIENTID, CLIENTSECRET);
var authenticationContext = new AuthenticationContext(authority, null);
return (await authenticationContext.AcquireTokenAsync(resource, adCredential)).AccessToken;
});
var secret = keyClient.GetSecretAsync(BaseURL, key, SecretKeyVerstion);
return secret.Result.Value.ToString();
这是我尝试过的方法之一。我还尝试了以下代码:
public void GetAzureUrl()
{
try
{
if (string.IsNullOrEmpty(LocalDBStorage.AzureUrls))
{
keyVClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetToken));
var secret = await keyVClient.GetSecretAsync(SECRETURI);
LocalDBStorage.AzureUrls = GetSecretAsync(SECRETURI);
keyVClient.Dispose();
}
}
catch (Exception ex)
{ throw ex; }
}
public string GetSecretAsync(string key)
{
if (Cache.TryGetValue(key, out var value))
return value;
else
{
var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetAccessTokenAsync));
var secret = (kv.GetSecretAsync(App.SECRETBase)).GetAwaiter().GetResult().Value;
return secret.Result.Value.ToString();
}
}
private async Task<string> GetAccessTokenAsync(string authority, string resource, string scope)
{
var clientId = CLIENTID;
var clientSecret = CLIENTSECRET;
ClientCredential clientCredential = new ClientCredential(clientId, clientSecret);
var context = new AuthenticationContext(authority, TokenCache.DefaultShared);
var result = await context.AcquireTokenAsync(resource, clientCredential);
return result.AccessToken;
}
请指教!亲切的问候,卡马尔
解决方案
推荐阅读
- php - Laravel 验证器是否检查文件或扩展名的 MIME 类型?
- javascript - 如何使 classList.toggle 遵循类的 CSS
- python - 如何运行包含打印语句而不打印的python代码?静音模式
- mysql - 有人可以说我在mysql中做错了什么吗?
- sql-server - 如何使用 Spark 临时表在 Databricks 中通过选择查询将数据插入表中
- c - C:编写 bash shell,如何为 SIGINT 模拟 bash shell 行为
- redirect - 有没有办法将 Gmail 帐户用作中央路由服务
- javascript - 无法将 AdMob 添加到我的项目:我的项目是 ReactNative 并且 AdMob 需要 JAVA
- oracle - Oracle 存储过程检索日期 ny 传递列名作为参数
- python - 没有成功读取字典值中的字符串?