Azure|Azure KeyVault(四)另类在 .NET Core 上操作 Secrets 的类库方法-----Azure.Security.KeyVault.Secrets
一,引言
上一篇文章我们在 .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 程序包
文章图片
使用程序包管理控制台进行安装
Install-Package Azure.Security.KeyVault.Secrets -Version 4.2.0
2,创建 ISecretsService 接口和 SecretsService 实现类,以及控制器方法
ISecretsService.cs
public interface ISecretsService { TaskGetSecretsAsync(string key); Task SetSecretAsync(string key,string value); Task DeleteSecretAsync(string key); }
SecrectsService.cs
public class SecretsService : ISecretsService { private readonly SecretClient _secretClient; public SecretsService(SecretClient secretClient) { this._secretClient = secretClient; }public async TaskGetSecretsAsync(string key) { var secret= await _secretClient.GetSecretAsync(key); return secret.Value.Value; }public async Task SetSecretAsync(string key, string value) { var setSecret= await _secretClient.SetSecretAsync(key, value); return setSecret.Value.Value; }public async Task 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 TaskIndex() { var list = new List (); list.Add(new KeyValueViewModel() { Key ="cnbate-name", Value = https://www.it610.com/article/await _keyVaultService.GetSecretByKeyAsync("cnbate-name") }); list.Add(new KeyValueViewModel() { Key = "cnbate-num", Value = https://www.it610.com/article/await _keyVaultService.GetSecretByKeyAsync("cnbate-num") }); list.Add(new KeyValueViewModel() { Key = "cnbate-time", Value = https://www.it610.com/article/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 = https://www.it610.com/article/await _secretsService.GetSecretsAsync("cnbate-name") }); list.Add(new KeyValueViewModel() { Key = "cnbate-num", Value = https://www.it610.com/article/await _secretsService.GetSecretsAsync("cnbate-num") }); list.Add(new KeyValueViewModel() { Key = "cnbate-time", Value = https://www.it610.com/article/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 数据
文章图片
Bingo !!!! 成功。添加,删除 Secrets 的操作,我就不再演示了,大家可以自行下载代码进行操作。
三,结尾 【Azure|Azure KeyVault(四)另类在 .NET Core 上操作 Secrets 的类库方法-----Azure.Security.KeyVault.Secrets】本文所分享的内容也存在着很多我自己的一些理解,有理解不到位的,还希望多多包涵,并且指出不足之处。
参考资料:关于 Azure Key Vault
github:https://github.com/yunqian44/Azure.KeyVault
作者:Allen
版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。
推荐阅读
- 面试|真别卷了 , 踏踏实实金三银四 , 少走点弯路
- 学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 Go 微服务系列(四)- 产品服务)
- 目标检测算法讲解与部署|NanoDet代码逐行精读与修改(四)动态软标签分配(dynamic soft label assigner)
- 异步电机基础|交流异步电机矢量控制(四)——simulink仿真搭建
- 【第三十四期】Golang社招面经-快手
- 云计算|Azure基础(什么是Azure 区域、可用性区域和区域对(14))
- ②(常识篇)、《史上最全iOS八股文面试题》2022年|②(常识篇)、《史上最全iOS八股文面试题》2022年,金三银四我为你准备了,iOS《1000条》笔试题以及面试题(包
- 逆波兰表达式(计算包含括号的四则运算表达式)
- ①(语法篇)、《史上最全iOS八股文面试题》2022年|①(语法篇)、《史上最全iOS八股文面试题》2022年,金三银四我为你准备了,iOS《1000条》笔试题以及面试题(包
- MySQL的四种事务隔离级别