Расшифровка с использованием провайдера пользовательских настроек - PullRequest
0 голосов
/ 01 марта 2019

Я искал решения для хранения информации о моем зашифрованном соединении в 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;
}

Я посмотрел тонну ресурсов, прочитал эту кучу, но, похоже, на самом деле нет ничего, что я ищу.Любые указатели или предложения приветствуются, я иду по неправильному пути?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...