У меня есть сайт, основанный на Jetty.
Я хотел бы сделать сайт защищенным паролем (или похожим).
Есть ли способ сделать это только с помощью конфигурации (не касаясь кода).
Вся помощь очень ценится.
Dan
У меня есть сайт, основанный на Jetty.
Я хотел бы сделать сайт защищенным паролем (или похожим).
Есть ли способ сделать это только с помощью конфигурации (не касаясь кода).
Вся помощь очень ценится.
Dan
Один из способов сделать это - настроить базовую аутентификацию для своего приложения. Вы должны сделать это только в том случае, если используете 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>
Я нашел пример того, что распределение причалов дает весьма полезную информацию. Чтобы использовать базовый 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 в их более раннем ответе. Он использует то же реальное имя, что и в демонстрационном примере из дистрибуции причала, поэтому он должен работать. Перезагрузите пристань и попытайтесь получить доступ к любым вашим веб-ресурсам. Ваш браузер или клиент должны запросить у вас учетные данные. Пользователь/пароль пользователя.