Tajemnica użytkownika wygląda na dobre rozwiązanie do przechowywania haseł i, ogólnie, sekretów aplikacji, co najmniej podczas programowania.
Sprawdź to article lub this. Możesz również sprawdzić inne pytanie na temat WT this.
To jest po prostu sposób na "ukrycie" tajemnic podczas procesu tworzenia i unikanie ich umieszczania w drzewie źródłowym; narzędzie Secret Manager nie szyfruje zapisanych tajników i nie powinno być traktowane jako zaufany sklep.
Jeśli chcesz wprowadzić zaszyfrowany plik appsettings.json do produkcji, nie ma ograniczeń co do tego. Możesz zbudować niestandardowego dostawcę konfiguracji. Sprawdź this.
Na przykład:
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();
}
}
zdefiniować klasę statyczną metodę rozszerzenia dla:
public static class CustomConfigProviderExtensions
{
public static IConfigurationBuilder AddEncryptedProvider(this IConfigurationBuilder builder)
{
return builder.Add(new CustomConfigProvider());
}
}
A potem można je aktywować:
// Set up configuration sources.
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEncryptedProvider()
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
Mam ten sam problem. czy możesz ukończyć UnencryptMyConfiguration na podstawie swojego komentarza? (na przykład wczytać plik i odszyfrować klucz po kluczu) –
Umieściłem rozwiązanie poniżej, które działa dla mnie, o wiele prostsze i idealne dla moich potrzeb. – CoderSteve