首页 > 解决方案 > 获取 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;

      
    }

请指教!亲切的问候,卡马尔

标签: c#azure

解决方案


推荐阅读