Как получить пароль для входа в сервлеты - PullRequest
2 голосов
/ 31 марта 2010

Я успешно реализовал аутентификацию на основе форм, и теперь я хочу получить имя пользователя и пароль для инициализации объекта сеанса в javamail из сервлетов. Как я могу это сделать? Я могу получить логин пользователя с помощью метода request.getRemoteUser (), но я не знаю, как получить пароль.

Если я создаю любой объект сеанса, например:

authentication = new PasswordAuthentication(user,password);
Properties props = new Properties();
props.put("mail.host", "localhost");
props.put("mail.debug",true);
props.put("mail.store.protocol", "pop3");
props.put("mail.transport.protocol", "smtp"); 
Session session = Session.getInstance(props, this);

тогда как я могу получать входящие сообщения от почтового сервера на основе определенного имени пользователя и пароля, если я не передаю пароль от сервлетов объекту PasswordAuthentication?

Ответы [ 2 ]

3 голосов
/ 01 апреля 2010

API Java EE / Servlet не позволяет этого. Вам нужно будет получить пароль по имени пользователя из того же источника пароля пользователя, что и контейнер, или для экстернализации источника пароля пользователя, чтобы его могли использовать как контейнер, так и ваш код, например, из базы данных. Проверьте документацию по рассматриваемому контейнеру, используя ключевое слово «Realm». Поскольку вы, кажется, используете Tomcat (основываясь на истории ваших вопросов), здесь является целевым примером Tomcat, проверьте, например, JDBCRealm .

0 голосов
/ 01 апреля 2010

Вы можете поместить обработчик javascript «onClick» на кнопку отправки формы входа в систему, выполняя AJAX-вызов сервлета, который хранит пароль. Однако это нарушает рамки безопасности.
Лучшая идея - иметь «безопасную» функцию кошелька пароля, защищенную аутентификацией J2EE. Эта функция будет получать ваш пароль электронной почты из базы данных или LDAP. Конечно, в этом случае база данных должна хранить ваши пароли в текстовом или запутанном формате.
Еще лучшая идея - использовать внешний аутентификатор (единый вход) для сервлета и сервера электронной почты, но это возможно только при наличии поставщика аутентификации, который они оба поддерживают.

...