#passwords #jakarta-mail
#пароли #джакарта-почта
Вопрос:
Вот мой случай: шесть аппаратных устройств отправляют свои данные на шесть адресов электронной почты (эта часть не находится под моим контролем). Мне нужно получить эти данные в приложении командной строки. Поскольку я повсюду слышу, что хранение паролей в виде открытого текста в базе данных или в коде является плохой практикой, я хотел бы попросить пользователя ввести пароль для каждого электронного письма один раз и сохранить его хэшированным в базе данных. Я использую SSL для шифрования трафика между моим приложением и почтовым сервером.
Поэтому мой вопрос таков: с этими хэшированными паролями, как мне использовать Javax для получения электронных писем? С помощью открытого текста я могу это сделать:
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("USER","PASSWORD");
}
});
Однако, судя по документам, аутентификация паролем работает только с открытым текстом. Что мне делать с хэшированными паролями?
Ответ №1:
Вы не можете. Если бы вы могли, они были бы так же хороши, как пароль с открытым текстом.
Возможно, вы захотите рассмотреть возможность проверки подлинности OAuth2, если ваш сервер ее поддерживает.
Комментарии:
1. Итак … как правильно для утилиты командной строки, подобной моей, извлекать данные из почтового ящика электронной почты? По другому вопросу, я немного знаю об OAuth, но можно ли его использовать в утилите командной строки?
2. Все зависит от того, насколько вы параноик. Вы можете зашифровать все пароли и сохранить их в базе данных, а затем запросить ключ дешифрования при запуске командной строки.