Я ищу быстрый способ защитить экземпляр Tomcat и все запущенные на нем веб-приложения, чтобы для доступа к любой странице требовались учетные данные (простое имя пользователя / пароль).
я думаю Царство это «правильный» способ сделать это, но его не так просто настроить. Мы бы предпочли способ, при котором вам вообще не нужно менять сами веб-приложения. Кто-нибудь знает, есть ли «быстрый и грязный» способ добиться этого?
Пара идей
(1) Если вы можете изменить web.xml своих веб-приложений, просто добавьте несколько строк в web.xml, чтобы потребовать базовую аутентификацию. Хитрость заключается в том, чтобы убедиться, что пользователю назначена роль в файле tomcat-users.xml, соответствующая роли, определенной в разделе auth-constraint файла web.xml:
web.xml:
<auth-constraint>
<role-name>protected</role-name>
</auth-constraint>
tomcat-users.xml:
<tomcat-users>
<user name="theuser" password="pas" roles="protected" />
</tomcat-users>
(2) Если перед вашим сервером Tomcat установлен httpd-сервер APache, это довольно просто сделать в Apache. В вашем файле конфигурации вам просто нужно настроить что-то вроде этого:
<Location /webappname>
AuthType Basic
AuthName "Protected site"
AuthUserFile /etc/apache2/passwords
Require user theuser
</Location>
Я бы поставил Apache перед Tomcat и обработал аутентификацию
Вот несколько инструкций о том, как это сделать с помощью mod_jk.
http://tomcat.apache.org/tomcat-3.3-doc/mod_jk-howto.html#s72
После того, как вы это настроите, вы можете использовать базовую аутентификацию Apache или выбранный вами модуль аутентификации.
Быстро и грязно (не рекомендуется для производства) будет MemoryRealm
MemoryRealm загружает информацию обо всех пользователях и их соответствующих ролях из $ CATALINA_BASE / conf / tomcat-users.xml
Определить Realm
в пределах server.xml
внутри <Engine>
или <Host>
и он будет применяться ко всем веб-приложениям.