Безопасность веб-сервера 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 например.