我正在做一个 .net 核心项目,需要读取一些用户 secret 。我阅读了以下两篇文章。
- Safe storage of app secrets in development in ASP.NET Core
- Azure Key Vault configuration provider in ASP.NET Core
我想知道是否有针对非 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();
}
}
关于c# - 在非 Azure 生产环境中,ASP.NET Core 中用户 secret 存储的推荐解决方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50501657/