Как хранить логин/пароль локально в .NET Core?
Всем привет! Знаю, что вопрос избитый и ответ: "пароли хранить нельзя". Но все же возникала такая необходимость.
Задача:
Приложение на Avalonia UI (C#/.Net Core) для Windows/Linux для взаимодействия с Redmine. Для работы с Redmine используется redmine-net-api. Вход по логину/паролю.
Должно обеспечиваться:
При первом запуске запрос логина/пароля, при последующих автоматический вход, а также смена логина/пароля для входа в настройках.
Необходимо (достаточно):
Автоматический вход выполняется только для того пользователя, который указал логин/пароль. Т.е. другой пользователь при запуске приложения на той же машине не авторизуется в RM под ранее указанными данными другого пользователя. Также при копировании файлов приложения получившего логин/пароль на другую машину - взаимодействие с RM было не возможно.
Варианты:
Для Windows есть решение: Retrieve credentials from Windows Credentials Store using C# , но хотелось обеспечить работу приложения на других ОС (хотя бы linux).
Также была идея использовать примерно такое решение: Data Encryption And Decryption in C#. Но в таком случае возникает проблема хранения ключа.
Также была идея использовать решение выше, а ключ собирать на лету из уникальных данных машины и пользователя, но как я понял в .NET Core нет универсального решения получения таких данных на разных ОС.
Может кто что подскажет?