Каков наилучший механизм хранения настроек аутентификации в приложении WinForms?

У меня есть приложение, которое будет отправлять аутентифицированные электронные письма с использованием System.Net.Mail и System.Net.NetworkCredential. Мой вопрос: как мне сохранить пароль, необходимый для создания объекта NetworkCrednetial?

У приложения нет логина, но я мог бы установить опцию, которая позволяет пользователю вводить свои учетные данные электронной почты (почти во всех случаях это будет вход в Windows). Я не могу использовать Active Directory, потому что не каждый клиент использует его.

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

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

2 ответа

Решение

Для хранения имени пользователя и пароля (в Windows) используйте DPAPI..Net интерфейсом к нему являются классы ProtectedData и ProtectedMemory.

Но сначала вы можете попробовать, если UseDefaultCredentials или DefaultNetworkCredentials работают для вашей среды.

Вы также можете использовать пользовательский интерфейс Win32 Credentials - существует ряд примеров использования этого в.NET, в том числе в MSDN.

Другие вопросы по тегам