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

У меня есть веб-сайт, работающий на причале.

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

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

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

Дэн

2 ответов


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

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

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

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

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

далее откройте файл /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>

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

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

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

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