gpt4 book ai didi

c# - 在 Azure 上存储 ASP.NET Core 应用程序密码的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-03 16:58:39 30 4
gpt4 key购买 nike

我开发了一些应用程序,并且正在使用外部服务来发送电子邮件(SendGrid)。要使用此服务,我需要登录名和密码才能使用 SendGrid api。在developmnet环境中,我使用了.Net Core secret ( https://learn.microsoft.com/pl-pl/aspnet/core/security/app-secrets?view=aspnetcore-2.2&tabs=windows ),但现在发布后我需要以其他方式提供登录名和密码。我知道有一个 Azure Key Vault,但如果应用程序将发布到其他地方怎么办?

最佳答案

用于生产:对 Azure 资源使用托管标识以避免存储连接字符串。这是一个用于管理 Key Vault 中 secret 的干净解决方案。

Key Vault 的访问 key 或其他类似资源永远不会共享,甚至不会共享给在生产中部署或运行​​应用程序的服务或 DevOps 工程师

  1. 创建 Azure Key Vault 并存储您的 secret
  2. 在 Azure 应用服务中启用系统托管身份。它将在 AAD 内部注册您的 Web 应用程序
  3. 在 Key Vault 中搜索托管服务身份应用程序 ID 并允许对其进行预期访问
  4. 通过以下代码段初始化与 Key Vault 的连接

Program.cs

using Microsoft.Azure.Services.AppAuthentication;
using Microsoft.Azure.KeyVault;
using Microsoft.Extensions.Configuration.AzureKeyVault;

...

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, config) =>
{
if (context.HostingEnvironment.IsProduction())
{
var builtConfig = config.Build();

var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(
new KeyVaultClient.AuthenticationCallback(
azureServiceTokenProvider.KeyVaultTokenCallback));

config.AddAzureKeyVault(
$"https://{builtConfig["KeyVaultName"]}.vault.azure.net/",
keyVaultClient,
new DefaultKeyVaultSecretManager());
}
})
.UseStartup<Startup>();

Startup.cs

public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}

public IConfiguration Configuration { get; }
}
  • 现在,Key Vault 中的 secret 将被加载到配置变量中。您可以像配置[“YourKeyVaultKeyName”]一样使用它。
  • 用于开发:您可以选择使用Dotnet-user-secrets工具来存储\管理本地计算机中的 secret 。

    关于c# - 在 Azure 上存储 ASP.NET Core 应用程序密码的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56278138/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com