Безопасность, управляемая контейнером для веб-приложения

#java #web-applications #jakarta-ee #security

#java #веб-приложения #джакарта-ee #Безопасность

Вопрос:

Я совершенно новичок в безопасности, управляемой контейнерами, и мне нужна помощь в ее настройке в моем веб-приложении.

Я хочу ограничить доступ к jsp в моем веб-приложении. Вот как я настроил безопасность в своем web.xml

 <security-constraint>
    <display-name>PrivilegedConstraint</display-name>
    <web-resource-collection>
        <web-resource-name>JSP Files</web-resource-name>
        <description>All the jsp files in the web application</description>
        <url-pattern>*.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>PrivilegedRole</role-name>
    </auth-constraint>
    <user-data-constraint>
        <description/>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>
<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>BasicRealm</realm-name>
</login-config>
<security-role>
    <description>This is a privileged role. Has access to everything in the web app</description>
    <role-name>PrivilegedRole</role-name>
</security-role>
  

Мои вопросы :

Какова цель realm-name в элементе login-config? Где мне настроить имя пользователя, пароли и сопоставить пользователей с ролями?

Когда я пытаюсь получить доступ к jsp в моем веб-приложении, меня просят ввести имя пользователя и пароль. Что я там даю? И как работает этот механизм безопасности?

Я совершенно новичок в безопасности, поэтому я буду благодарен, если кто-нибудь сможет указать мне на хорошую статью, в которой объясняются основы настройки безопасности и как это на самом деле работает?

Ответ №1:

Вопрос: «Какова цель имени области в элементе login-config?»

Из руководства по Java EE 6:

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

Поведение, определенное таким образом в текущей спецификации Servlet 3.0:

Базовая аутентификация HTTP, основанная на имени пользователя и пароле, является механизмом аутентификации, определенным в спецификации HTTP / 1.0. Веб-сервер запрашивает веб-клиент для аутентификации пользователя. Как часть запроса, веб-сервер передает область (строку), в которой пользователь должен быть аутентифицирован. Веб-клиент получает имя пользователя и пароль от пользователя и передает их на веб-сервер. Затем веб-сервер проверяет подлинность пользователя в указанной области.

Вопрос: «Где мне настроить имя пользователя, пароли и сопоставить пользователей с ролями?»

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

Пользователи и группы часто определяются в каталоге. Затем сервер настраивается для использования этого каталога, и администратор сопоставит роли приложений во время развертывания.

Тестовый сервер Tomcat разработчика может использовать плоский файл; рабочий сервер WebSphere может подключаться к каталогу Exchange компании через LDAP.

Для получения дополнительной информации обратитесь к документации вашего сервера.

Вы могли бы поступить хуже, чем следовать руководству Oracle Java EE 6 с Netbeans и Glassfish, но помните о шагах, специфичных для продуктов этого поставщика.