前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在NETCORE中实现KEY Vault

在NETCORE中实现KEY Vault

作者头像
老张的哲学
发布2023-08-23 13:55:20
2290
发布2023-08-23 13:55:20
举报
文章被收录于专栏:NetCore 从壹开始

在开发过程中,保护隐私密钥是一个很常见的场景,我们可以用多环境的配置文件来实现保护生产环境的密钥,也可以使用k8s或者配置中心的方式,Azure全家桶中,提供Azure Key Vault,可以方便我们快速的配置、使用和热重载对应的私密信息。

一、什么是Azure Key Vault

在之前的文章中,我们也详细说到了KeyVault的原理和开启方式,也介绍过如何将 Azure 应用程序配置服务与 Azure Key Vault 配合使用。 应用程序配置可以创建密钥来引用存储在 Key Vault 中的值,以帮助你结合使用这两个服务。 当应用程序配置创建此类密钥时,它会存储 Key Vault 值的 URI,而不是值本身。

本文主要说明了在代码中实现 Key Vault 引用。 它建立在快速入门中介绍的 Web 应用之上。 在继续操作之前,请先完成使用应用程序配置创建 ASP.NET Core 应用,相应的代码可以点击文章末尾的阅读原文。

在微软的官方教程中,也有很详细的内容和示例Demo,特别是很明显,把SpringBoot也做了讲解。看来微软在java这块还是很下功夫的。

二、在Azure中配置Key Vault

在之前的文章中也说到了,可以看看,进一步稳固下。

具体的查看之前的文章,有更详细的介绍:

在ASP.Net Core和JAVA中,使用Azure配置密钥——Key Vault

三、在ASP.NETCore中使用Key Vault

1、添加nuget依赖包

代码语言:javascript
复制
 <PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="3.1.21" />
 <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="5.0.0" />
 <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="5.0.0" />

2、配置环境变量

可以在ASP.NETCore项目的launchSettings.json中配置环境变量,也可以在本地机器上直接配置

代码语言:javascript
复制
 "environmentVariables": {
   "ASPNETCORE_ENVIRONMENT": "np",
   "AZURE_TENANT_ID": "xxx-xxx-xxx-xxx",
   "AZURE_CLIENT_ID": "xx-xxxxx-xxxx-xxxx",
   "AZURE_CLIENT_SECRET": "secret",
   "AZURE_KEY_VAULT_URI": "https://laozhangisphi.vault.azure.cn/"

 },

3、项目启动时,添加配置服务

代码语言:javascript
复制
    Host.CreateDefaultBuilder(args)
     .ConfigureAppConfiguration((hostingContext, config) =>
     {
         var env = hostingContext.HostingEnvironment;
         var tenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID");
         var clientId = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID");
         var clientSecret = Environment.GetEnvironmentVariable("AZURE_CLIENT_SECRET")
         var vaultUri = Environment.GetEnvironmentVariable("AZURE_KEY_VAULT_URI");
         config
          .AddJsonFile("appsettings.json", true)
          .AddJsonFile($"appsettings.{env.EnvironmentName}.json", true)
          .AddEnvironmentVariables();

         config.AddAzureKeyVault(vaultUri, clientId, clientSecret);
     })
     .ConfigureWebHostDefaults(webBuilder =>
     {
         webBuilder.UseStartup<Startup>();
     });

4、直接在代码中使用

因为已经注册到configration中了,所以使用方式和从appsettings.json中读取是一样的

代码语言:javascript
复制
  //var conn = Configuration.GetValue<string>("XMatrix-AAAPlatform-MSServerConnectionString");
  var mssqlUserName = Configuration.GetValue<string>("MSSQL-USERNAME");
  var mssqlUserPwd = Configuration.GetValue<string>("MSSQL-PASSWORD");
  var conn = Configuration.GetValue<string>("MysqlDbConnectionStrings");
  conn = string.Format(conn, mssqlUserName, mssqlUserPwd);
  Console.WriteLine(conn);

在接下来,就是该说下,如何在React或者Vue中,来实现对Azure的整体使用和架构搭建了,咱们下个文章继续吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 NetCore 从壹开始 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档