Kullanıcı sırları, şifreleri saklamak için iyi bir çözüm ve genellikle uygulama sırları, numaralı geliştirme sırasında en az gibi görünüyor.
Bu article veya this'u kontrol edin. this diğer SO sorusunu da kontrol edebilirsiniz.
Bu, geliştirme sürecinde sırlarınızı "gizlemenin" ve onları kaynak ağaca kapatmamanın bir yoludur; Gizli Yönetici aracı saklanan sırları şifrelemez ve güvenilir bir mağaza olarak ele alınmamalıdır.
Şifrelenmiş bir appsettings.json'u üretime getirmek isterseniz, bununla ilgili bir sınırlama yoktur. Özel yapılandırma sağlayıcınızı oluşturabilirsiniz. this'u kontrol edin.
public class CustomConfigProvider : ConfigurationProvider, IConfigurationSource
{
public CustomConfigProvider()
{
}
public override void Load()
{
Data = UnencryptMyConfiguration();
}
private IDictionary<string, string> UnencryptMyConfiguration()
{
// do whatever you need to do here, for example load the file and unencrypt key by key
//Like:
var configValues = new Dictionary<string, string>
{
{"key1", "unencryptedValue1"},
{"key2", "unencryptedValue2"}
};
return configValues;
}
private IDictionary<string, string> CreateAndSaveDefaultValues(IDictionary<string, string> defaultDictionary)
{
var configValues = new Dictionary<string, string>
{
{"key1", "encryptedValue1"},
{"key2", "encryptedValue2"}
};
return configValues;
}
public IConfigurationProvider Build(IConfigurationBuilder builder)
{
return new CustomConfigProvider();
}
}
Uzantınız yöntemi için statik bir sınıf tanımlamak:
public static class CustomConfigProviderExtensions
{
public static IConfigurationBuilder AddEncryptedProvider(this IConfigurationBuilder builder)
{
return builder.Add(new CustomConfigProvider());
}
}
Sonra da onu etkinleştirebilirsiniz:
// Set up configuration sources.
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEncryptedProvider()
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
Aynı problemim var. UnencryptMyConfiguration'u yorumunuza göre tamamlayabilir misiniz? (örneğin dosyayı yükle ve anahtarı anahtarını aç) –
Benim için çalışacak bir çözüm gönderdim, ihtiyaçlar için çok daha basit ve mükemmel. – CoderSteve