Azure KeyVault(四)另类在 .NET Core 上操作 Secrets 的类库方法—–Azure.Security.KeyVault.Secrets

虚幻大学 xuhss 465℃ 0评论

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

一,引言

  上一篇文章我们在 .Net Core Web 项目中添加了 “Microsoft.Azure.KeyVault” 的 Nuget 包操作 Azure KeyVault 的 Secrets 数据。微软已经将 “Microsoft.Azure.KeyVault” Nuget 遗弃了,推荐大家使用 “Azure.Security.KeyVault.Secrets”。

  1)Azure Key Vault 机密客户端库允许我们安全地存储和控制对令牌、密码、API 密钥和其他机密的访问。该库提供创建、检索、更新、删除、清除、备份、恢复和列出机密及其版本的操作。

  2)SecretClient 在 SDK 中提供同步和异步操作,允许根据应用程序的用例选择客户端。初始化 SecretClient 后,就可以与 Azure Key Vault 中的机密进行交互。

基于以上两点,今天继续分享 Azure Key Vault 的相关知识,使用新的 "Azure.Security.KeyVault.Secrets" 操作 Azure Key Vault 的 Secrets。

-------------------- 我是分割线 --------------------

1,Azure Kay Vault(一).NET Core Console App 获取密钥保管库中的机密信息

2,Azure Key Vault(二)- 入门简介

3,Azure KeyVault(三)通过 Microsoft.Azure.KeyVault 类库在 .NET Core 上获取 Secrets

4,Azure KeyVault(四)另类在 .NET Core 上操作 Secrets 的 类库方法-----Azure.Security.KeyVault.Secrets

二,正文

1,添加 “Azure.Security.KeyVault.Secrets” 的 Nuget 程序包

ff81220b5aef35c77941270c0595029b - Azure KeyVault(四)另类在 .NET Core 上操作 Secrets 的类库方法-----Azure.Security.KeyVault.Secrets

使用程序包管理控制台进行安装

?

| 1 | Install-Package Azure.Security.KeyVault.Secrets -Version 4.2.0 |

2,创建 ISecretsService 接口和 SecretsService 实现类,以及控制器方法

ISecretsService.cs

public interface ISecretsService
 {
 Task<string> GetSecretsAsync(string key);

 Task<string> SetSecretAsync(string key,string value);

 Task<string> DeleteSecretAsync(string key);
 }

SecrectsService.cs

    public class SecretsService : ISecretsService
 {
 private readonly SecretClient \_secretClient;

 public SecretsService(SecretClient secretClient)
 {
 this.\_secretClient = secretClient;
 }

 public async Task<string> GetSecretsAsync(string key)
 {
 var secret= await \_secretClient.GetSecretAsync(key);
 return secret.Value.Value;
 }

 public async Task<string> SetSecretAsync(string key, string value)
 {
 var setSecret= await \_secretClient.SetSecretAsync(key, value);
 return setSecret.Value.Value;
 }

 public async Task<string> DeleteSecretAsync(string key)
 {
 var operation= await \_secretClient.StartDeleteSecretAsync(key);
 var deleteSecret= await operation.WaitForCompletionAsync();
 await \_secretClient.PurgeDeletedSecretAsync(operation.Value.Name);

 return deleteSecret.Value.Value;
 }
 }

HomeController.cs

public class HomeController : Controller
 {
 private readonly ILogger \_logger;

 private readonly IKeyVaultService \_keyVaultService;

 private readonly ISecretsService \_secretsService;

 public HomeController(ILogger logger,
 IKeyVaultService keyVaultService,
 ISecretsService secretsService)
 {
 \_logger = logger;
 \_keyVaultService = keyVaultService;
 \_secretsService = secretsService;
 }

 public async Task Index()
 {
 var list = new List();
 list.Add(new KeyValueViewModel() { Key ="cnbate-name", Value = await \_keyVaultService.GetSecretByKeyAsync("cnbate-name") });
 list.Add(new KeyValueViewModel() { Key = "cnbate-num", Value = await \_keyVaultService.GetSecretByKeyAsync("cnbate-num") });
 list.Add(new KeyValueViewModel() { Key = "cnbate-time", Value = await \_keyVaultService.GetSecretByKeyAsync("cnbate-time") });

 return View(list);
 }

 public IActionResult Privacy()
 {
 return View();
 }

 **public async Task Secrets()
 {
 var list = new List();
 list.Add(new KeyValueViewModel() { Key = "cnbate-name", Value = await \_secretsService.GetSecretsAsync("cnbate-name") });
 list.Add(new KeyValueViewModel() { Key = "cnbate-num", Value = await \_secretsService.GetSecretsAsync("cnbate-num") });
 list.Add(new KeyValueViewModel() { Key = "cnbate-time", Value = await \_secretsService.GetSecretsAsync("cnbate-time") });

 return** **View(list);
 }**

 [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
 public IActionResult Error()
 {
 return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
 }
 }

3,添加对 SecretsService 和 SecretClient 的注入

services.AddSingleton(new Appsettings(Env.ContentRootPath));
services.AddSingleton(x => new SecretClient(vaultUri: new Uri(Appsettings.app("AzureKeyVault", "Endpoint")), credential: new DefaultAzureCredential()));
services.AddScoped();

4,测试使用新的获取 Secrets 的 Nuget 包中的方法是否能正常操作 Azure KeyVault 的 Secrets 数据

F5 运行项目,获取保存的所有的 Secrets 数据

3419f080c37199122e1e99e65358280d - Azure KeyVault(四)另类在 .NET Core 上操作 Secrets 的类库方法-----Azure.Security.KeyVault.Secrets

Bingo !!!! 成功。添加,删除 Secrets 的操作,我就不再演示了,大家可以自行下载代码进行操作。

三,结尾

本文所分享的内容也存在着很多我自己的一些理解,有理解不到位的,还希望多多包涵,并且指出不足之处。

参考资料:关于 Azure Key Vault

github:https://github.com/yunqian44/Azure.KeyVault

作者:Allen

版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。

转载请注明:xuhss » Azure KeyVault(四)另类在 .NET Core 上操作 Secrets 的类库方法—–Azure.Security.KeyVault.Secrets

喜欢 (0)

您必须 登录 才能发表评论!