代码之家  ›  专栏  ›  技术社区  ›  David S.

对于非Azure生产环境中ASP.NET核心中的用户机密存储,推荐的解决方案是什么?

  •  4
  • David S.  · 技术社区  · 6 年前

    我正在做一个.NET核心项目,它需要阅读一些用户秘密。我读了以下两篇文章。

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   wp78de    6 年前

    .NET核心允许您将机密存储在配置系统的各个位置。

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

    • 文件格式(ini、json和xml)。
    • 命令行参数。
    • 环境变量。
    • 内存中的.NET对象。
    • 未加密的密钥管理器存储。
    • 加密的用户存储,如Azure密钥库。
    • 自定义提供程序(已安装或已创建)。

    使用命令行上的microsoft.extensions.secretmanager.tools管理用户机密很方便,然后使用microsoft.extensions.configuration.user secret s从应用程序的配置中获取机密。

    但是,您应该对自己存储的信息进行加密,无论存储在何处,例如appsettings.production.json。

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

    public class CustomConfigProvider : ConfigurationProvider
    {
        public CustomConfigProvider() { }
    
        public override void Load()
        {
            Data = MyEncryptUtils.DecryptConfiguration();
        }
    }
    

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