Если я хочу, чтобы пароль был «перехвачен», следует ли использовать https? Или есть другой способ защитить пароль на уровне приложения?
Да, HTTPS предназначен именно для этой цели. Нет, нет других способов, когда вы хотите использовать HTTP. Чтобы настроить HTTPS на Tomcat, прочитайте Tomcat SSL Configuration HOW-TO.
Если это единственный способ, можно ограничить доступ к приложению только с HTTPS? (Я использую Tomcat, если это уместно).
Да, это возможно. При использовании аутентификации, управляемой контейнером, вы можете принудительно установить это, установив транспортную гарантию на CONFIDENTIAL
в web.xml
. См. Также Java EE 6 tutorial - Securing web applications. Tomcat здесь неактуальен, вам нужно только убедиться, что он поддерживает HTTPS, как было сказано ранее.
<security-constraint>
...
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Если вы однако homegrowing аутентификации, то вам нужно реализовать пользовательские filter, который проверяет, если ServletRequest#isSecure()
возвращает false
и отправляет переадресацию на соответствующую схему HTTPS URL.
Спасибо за быстрый ответ :) – Andna