c# - 在非 Azure 生产环境中,ASP.NET Core 中用户 secret 存储的推荐解决方案是什么?

标签 c# asp.net-core

我正在做一个 .net 核心项目,需要读取一些用户 secret 。我阅读了以下两篇文章。

我想知道是否有针对非 Azure 生产环境的类似解决方案,例如一个可以在 AWS 中工作的。

最佳答案

.NET Core 允许您将 secret 存储在配置系统的各个位置。

documentation 中列出了许多不同的配置提供程序:

  • 文件格式(INI、JSON 和 XML)。
  • 命令行参数。
  • 环境变量。
  • 内存中的 .NET 对象。
  • 未加密的 Secret Manager 存储。
  • 加密的用户存储,例如 Azure Key Vault。
  • 自定义提供程序(安装或创建)。

在命令行上使用 Microsoft.Extensions.SecretManager.Tools 管理用户密码很方便,然后使用 Microsoft.Extensions.Configuration.UserSecrets 从您的应用配置中获取密码。

但是,您应该自己加密存储的信息,无论您将其存储在哪里,例如。 appsettings.production.json。

为此,您可以使用自定义配置提供程序来加密和解密您的 secret 。您的自定义提供程序应继承自 ConfigurationProvider 类,如图所示 here .

public class CustomConfigProvider : ConfigurationProvider
{
    public CustomConfigProvider() { }

    public override void Load()
    {
        Data = MyEncryptUtils.DecryptConfiguration();
    }
}

另请参阅:Encrypted Configuration in ASP.NET Core

关于c# - 在非 Azure 生产环境中,ASP.NET Core 中用户 secret 存储的推荐解决方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50501657/

相关文章:

C# 从命令行加载文件?

c# - Asp.net core + EF Code优先,迁移不同项目中的文件

asp.net-core - Blazor Wasm PWA 未更新

jquery - 我在 Windows 7 中通过 Dropzone 上传文件时收到错误响应

visual-studio-2015 - 无法在 Asp.net Core 项目中将命名空间提供程序设置为 false

c# - EF 很多或默认

c# - 如何在 .NET 中自动更新我的 Windows 服务?

c# - 以编程方式启用 Windows Phone 7 应用程序中禁用的复选框

c# - 查看包未更新

c# - 将 PENDING 锁设置为 EF core Sqlite