我使用以下代码上传到我的Azure storange帐户中的图像容器。 app.config中的连接字符串是:
<appSettings>
<add key="StorageConnectionString" value="MyConnectionString" />
</appSettings>
CloudStorageAccount storageAccount = CloudStorageAccount.Parse
CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference("imagestorage");
// Retrieve reference to a blob named "myblob".
CloudBlockBlob blockBlob = container.GetBlockBlobReference("IMG1.png");
// Create or overwrite the "myblob" blob with contents from a local file.
using (var fileStream = System.IO.File.OpenRead(@"D:\Untitled.png"))
{
blockBlob.UploadFromStream(fileStream);
}
问题是如何将Azure Key Vault集成到我的本机应用程序中,以便我的API密钥不会被一些讨厌的逆向工程师所破坏?
我已在Azure Active Directory中注册了我的应用,并获得了Azure Key Vault的权限。
此外,在尝试使用我的原生桌面应用程序之前,必须先使用个人帐户登录我的ASP.NET Web API应用程序并在使用任何其他功能之前接收令牌。我的所有控制器都需要授权。
答案 0 :(得分:0)
我相信您尝试做的是将Azure KeyVault与您的C#应用程序集成。您可以使用2 API执行此操作。一个是Microsoft.Azure.KeyVault,另一个是ADAL。
按照这些步骤可以回答:
public async Task<string> GetToken(string authority, string resource, string scope)
{
var authContext = new AuthenticationContext(authority);
ClientCredential clientCred = new ClientCredential(ConfigurationManager.AppSettings["ClientID"], ConfigurationManager.AppSettings["ClientSecret"]);
AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientCred);
if(result == null)
{
throw new InvalidOperationException("Failed to obtain the JWT Token");
}
Console.WriteLine("Retrieved Password");
return result.AccessToken;
}
然后通过运行这个来获取您尝试返回的内容的价值:
public async Task getvaluesAsync()
{
var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetToken));
var sec = await kv.GetSecretAsync(ConfigurationManager.AppSettings["SecretURI"]);
EncryptSecret = sec.Value;
}
将ClientID,Client Secret和SecretURI的相应值替换为App.config文件中的值。使用&#34; EcryptSecret&#34;使用getter和setter方法。做类似的事情,
public static string EncryptSecret { get; set; }
这将持续存储密码/数据库连接以供进一步使用。
一些有用的文章将是: https://docs.microsoft.com/en-us/azure/key-vault/key-vault-developers-guide