Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Настройка безопасности с использованием дескрипторов развёртывания

Рекомендуемый способ настройки безопасности в платформе Java EE 8 — аннотации. Если вы хотите переопределить параметры безопасности во время развёртывания, вы можете использовать для этого элементы безопасности в дескрипторе развёртывания web.xml. В этом разделе описывается, как использовать дескриптор развёртывания, чтобы задать базовую аутентификацию и изменить назначение по умолчанию ролей для принципалов.

Здесь рассматриваются следующие темы:

Настройки безопасности для базовой аутентификации в дескрипторе развёртывания

Элементы дескриптора развёртывания, которые добавляют базовую аутентификацию в пример, сообщают серверу или браузеру выполнить следующие задачи.

  • Отправьте стандартное диалоговое окно входа в систему для получения данных об имени пользователя и пароле.

  • Убедитесь, что пользователь авторизован для доступа к приложению.

  • Если разрешено, отобразите сервлет пользователю.

Следующий пример кода показывает элементы безопасности для дескриптора развертывания, которые можно использовать в примере базовой проверки подлинности, найденном в каталоге tut-install/examples/security/hello2_basicauth/:

    <security-constraint>
        <display-name>SecurityConstraint</display-name>
        <web-resource-collection>
             <web-resource-name>WRCollection</web-resource-name>
            <url-pattern>/greeting</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>TutorialUser</role-name>
        </auth-constraint>
        <user-data-constraint>
             <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>file</realm-name>
    </login-config>
    <security-role>
        <role-name>TutorialUser</role-name>
    </security-role>

Этот дескриптор развёртывания указывает, что URI запроса /greeting могут быть доступны только пользователям, которые ввели свои имена пользователей и пароли и были авторизованы для доступа к этому URL, поскольку они были проверены на наличие у них роли TutorialUser. Имя пользователя и пароль будут отправлены по защищённому транспортному протоколу, чтобы предотвратить их считывание при передаче.

Настройки назначения ролей принципалам в дескрипторе развёртывания

API безопасности Java EE требует, чтобы имена принципалов группы по умолчанию соответствовали одноимённым ролям. По умолчанию GlassFish придерживается этого стандарта и предоставляет принципала группы для сопоставления ролей. Реализации стандарта, однако, могут предоставить механизмы для настройки другого значения по умолчанию.

Чтобы сопоставить название роли, разрешённое приложением или модулем, с принципалами (пользователями) и группами, определёнными на сервере, используйте элемент security-role-mapping в файле дескриптора развёртывания среды выполнения (glassfish-application.xml, glassfish-web.xml или glassfish-ejb-jar.xml). Запись должна объявлять сопоставление между ролью безопасности, используемой в приложении, и одной или несколькими группами или принципалами, определёнными для соответствующей области GlassFish Server. Пример файла glassfish-web.xml показан ниже:

<glassfish-web-app>
    <security-role-mapping>
        <role-name>DIRECTOR</role-name>
        <principal-name>schwartz</principal-name>
    </security-role-mapping>
    <security-role-mapping>
        <role-name>DEPT-ADMIN</role-name>
        <group-name>dept-admins</group-name>
    </security-role-mapping>
</glassfish-web-app>

Название роли может быть сопоставлено с определённым принципалом (пользователем), группой или обоими. Указанные имена принципалов или групп должны быть действительными принципалами или группами в текущей области безопасности по умолчанию GlassFish Server. role-name в этом примере должно точно соответствовать role-name в элементе security-role соответствующего файла web.xml или название роли, определённые аннотациями @DeclareRoles и/или @RolesAllowed.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)