在NETCORE中实现KEY Vault

在开发过程中,保护隐私密钥是一个很常见的场景,我们可以用多环境的配置文件来实现保护生产环境的密钥,也可以使用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这块还是很下功夫的。

08cc763c959f46afac36efb6cdfbd24b.png

二、在Azure中配置Key Vault

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

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

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

113c081b19a8f1ebb8db9123cc05d6fc.png

三、在ASP.NETCore中使用Key Vault

1、添加nuget依赖包

<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中配置环境变量,也可以在本地机器上直接配置

"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、项目启动时,添加配置服务

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中读取是一样的

//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的整体使用和架构搭建了,咱们下个文章继续吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Netcore 可以通过使用网络通信技术实现聊天功能。一种常见的方式是使用Socket套接字进行通信。 首先,我们需要一个服务器端和多个客户端。服务器端负责接收和转发消息,而客户端用于发送和接收消息。 服务器端的实现可以使用Netcore的TcpListener类。该类允许我们创建一个TCP服务器,监听指定的端口,等待客户端的连接。一旦有客户端连接,服务器通过TcpClient接收和发送消息。 客户端的实现可以使用Netcore的TcpClient类。该类允许我们连接到服务器端,并通过网络流发送和接收消息。 在聊天应用,客户端可以输入消息并发送给服务器,服务器收到消息后转发给所有连接的客户端。客户端也能接收服务器和其他客户端发送的消息,并将其显示在用户界面上。 为了实现实时聊天,我们可以通过在服务器和客户端之间建立一个持久连接来实现。这意味着连接会一直保持打开状态,以便服务器和客户端可以实时发送和接收消息。 使用Netcore的异步编程模型可以提高聊天应用的性能和可扩展性。可以使用async和await关键字来处理异步任务。通过使用异步套接字操作,我们可以同时处理多个连接和消息,避免阻塞或挂起主线程。 总而言之,Netcore提供了丰富的网络编程功能,可以方便地实现聊天应用。通过使用Sockets和异步编程模型,我们可以构建一个高性能、实时的聊天系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值