Я искал решения для хранения информации о моем зашифрованном соединении в Appsettings.json и расшифровки с использованием расширения ConfigProvider.Я иду по этому пути, так как я должен иметь возможность использовать его во всех своих производственных приложениях.Секреты и хранилище ключей Azure не похоже на то, что я ищу, или у меня есть возможность использовать.
Я основываюсь на этом на данный момент
Мой файл json выглядит примерно так:
{
"ConnectionStrings": {
"SerilogConnection": "encryptedConnection",
"OracleConnection": "encryptedConnection"
}
}
Мне трудно понять, как загрузить мой json в этот объект словаря с помощью расшифрованных ключей и вернуть его в компоновщик конфигурации...
private IDictionary<string, string> UnencryptMyConfiguration()
{
// how do parse json this and decrypt?
// var jObj = JObject.Parse(json);
// var innerJObj = JObject.FromObject(jObj["ConnectionStrings"]);
// use decryption method here?
var configValues = new Dictionary<string, string>
{
{"key1", "unencryptedValue1"},
{"key2", "unencryptedValue2"}
};
return configValues;
}
Заботится ли мне об этом строитель?
var configuration = new ConfigurationBuilder()
.AddJsonFile($"appsettings.{_currentEnv}.json", optional: true)
.AddJsonFile("appsettings.json")
.AddEncryptedProvider() // <-- here?
.AddEnvironmentVariables()
.Build();
Вот мой метод расшифровки, который я использую в отдельном проекте:
public string DecryptData(string data)
{
string path = @"c:\temp\PrivateKey.txt";
var privateKey = System.IO.File.ReadAllText(path);
var bytesCypherText = Convert.FromBase64String(data);
var csp = new RSACryptoServiceProvider();
var sr = new System.IO.StringReader(privateKey);
var xs = new System.Xml.Serialization.XmlSerializer(typeof(RSAParameters));
var privKey = (RSAParameters)xs.Deserialize(sr);
csp.ImportParameters(privKey);
var bytesPlainTextData = csp.Decrypt(bytesCypherText, false);
var plainTextData = System.Text.Encoding.Unicode.GetString(bytesPlainTextData);
return plainTextData;
}
Я посмотрел тонну ресурсов, прочитал эту кучу, но, похоже, на самом деле нет ничего, что я ищу.Любые указатели или предложения приветствуются, я иду по неправильному пути?