Безопасность веб-сервера Jetty

У меня есть сайт, основанный на Jetty.

Я хотел бы сделать сайт защищенным паролем (или похожим).

Есть ли способ сделать это только с помощью конфигурации (не касаясь кода).

Вся помощь очень ценится.

Dan

Ответ 1

Один из способов сделать это - настроить базовую аутентификацию для своего приложения. Вы должны сделать это только в том случае, если используете ssl, но тогда логин без ssl не будет защищен в любом случае, поэтому, я думаю, у вас это уже есть.

В Jetty есть много способов сделать это, и это только один из них.

Сначала вы должны определить область, в которой вы определяете всех пользователей, пароли, роли и т.д. Настройки по умолчанию в Jetty уже определяют область, называемую "Test Realm". Область определена в файле /etc/jetty -testrealm.xml. Вы можете использовать это царство или создать новый. Если вы определяете новое, вы можете определить его в том же файле или в отдельном файле. Если вы создадите отдельный файл, не забудьте включить этот файл в start.ini.

В файле /etc/jetty -testrealm.xml имеется ссылка на /etc/realm.properties. Здесь вы создаете своих пользователей. Если вы хотите просто использовать тестовую область, не забудьте удалить пользователей по умолчанию, которые уже определены в realm.properties.

Существуют также другие виды реализаций царства, которые используют, например, базу данных для пользовательских данных.

Затем откройте файл /etc/webdefault.xml и добавьте что-то вроде этого внизу:

<security-constraint>
  <web-resource-collection>
    <url-pattern>/*</url-pattern>      <!--The url that should be protected -->
  </web-resource-collection>
  <auth-constraint>
    <role-name>admin</role-name>       <!--The required roles for accessing the url -->
    <role-name>user</role-name>
    <role-name>moderator</role-name>
  </auth-constraint>
</security-constraint>

<login-config>
  <auth-method>BASIC</auth-method>     <!-- Use http basic authentication -->
  <realm-name>Test Realm</realm-name>  <!-- Users are defined in this realm -->
</login-config>

Ответ 2

Я нашел пример того, что распределение причалов дает весьма полезную информацию. Чтобы использовать базовый auth, используя учетные записи пользователей из текстового файла, посмотрите на каталог {jetty.home}/demo-base/etc. Скопируйте эти два файла в папку {jetty.base}/etc: realm.properties, test-realm.xml

Jetty не будет правильно загружать эти файлы, если вы не сообщите об этом. Это можно сделать, добавив следующий текст в файл start.ini или любой файл *.ini в папку {jetty.base}/start.d:

# Create and configure the test realm
etc/test-realm.xml
jetty.demo.realm=etc/realm.properties

Наконец, создайте файл web.xml(если это еще не сделано) и вставьте пример, предоставленный @sstendal/@Torsten в их более раннем ответе. Он использует то же реальное имя, что и в демонстрационном примере из дистрибуции причала, поэтому он должен работать. Перезагрузите пристань и попытайтесь получить доступ к любым вашим веб-ресурсам. Ваш браузер или клиент должны запросить у вас учетные данные. Пользователь/пароль пользователя.