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

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

Использование области безопасности JDBC для аутентификации пользователя

Область безопасности, иногда называемая доменом политики безопасности или доменом безопасности, является областью, в которой сервер приложений определяет и применяет общую политику безопасности. Область содержит список пользователей, которым может быть назначена (или не может быть назначена) группа. Сервер GlassFish поставляется с предустановленными областями безопасности file, certificate, and administration. Администратор также может настроить LDAP, JDBC, дайджест или кастомные области безопасности.

Приложение может указать в своём дескрипторе развёртывания, какую область безопасности использовать. Если приложение не указывает область, сервер GlassFish использует свою область по умолчанию — область file. Если приложение указывает, что область JDBC должна использоваться для аутентификации пользователя, GlassFish Server будет получать учётные данные пользователя из базы данных. Сервер приложений использует информацию базы данных и включённую опцию области JDBC в файле конфигурации.

База данных предоставляет простой способ добавлять, редактировать или удалять пользователей во время выполнения и позволяет пользователям создавать свои собственные учётные записи без какой-либо административной помощи. Использование базы данных имеет дополнительное преимущество: предоставление места для безопасного хранения любой дополнительной пользовательской информации. Область может рассматриваться как база данных имён пользователей и паролей, которые идентифицируют действительных пользователей веб-приложения или набора веб-приложений с перечислением списка ролей, связанных с каждым пользователем. Доступ к определённым ресурсам веб-приложения предоставляется всем пользователям с определённой ролью вместо перечисления списка связанных пользователей. Имя пользователя может иметь любое количество ролей, связанных с ним.

В двух примерах учебного пособия — главе 62 «Пример Duke’s Tutoring» и главе 63 «Пример Duke's Forest» — используется область JDBC для пользователя аутентификация.

Настройка аутентификации области безопасности JDBC

Сервер GlassFish позволяет администраторам указывать учётные данные пользователя (имя пользователя и пароль) в области JDBC, а не в пуле соединений. Это не позволяет другим приложениям просматривать таблицы базы данных для учётных данных пользователя. По умолчанию хранение паролей в виде открытого текста не поддерживается в области JDBC. В обычных условиях пароли не должны храниться в виде открытого текста.

  1. Создайте таблицы базы данных, в которых будут храниться учётные данные пользователя для области.

  2. Добавьте учётные данные пользователя в созданные вами таблицы базы данных.

  3. Создайте пул соединений JDBC для базы данных.

    Вы можете использовать Консоль администрирования или командную строку для создания пула соединений.

  4. Создайте ресурс JDBC для базы данных.

    Вы можете использовать Консоль администрирования или командную строку для создания ресурса JDBC.

  5. Создайте область безопасности

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

    Вы можете использовать Консоль администрирования или командную строку для создания области.

  6. Измените дескриптор развёртывания для своего приложения, чтобы указать область JDBC.

    • Для корпоративного приложения в файле EAR измените файл glassfish-application.xml.

    • Для веб-приложения в файле WAR измените файл web.xml.

    • Для Enterprise-бина в файле JAR EJB измените файл glassfish-ejb-jar.xml.

      Например, для гипотетического приложения файл web.xml может указывать область jdbcRealm следующим образом:

      <login-config>
          <auth-method>FORM</auth-method>
          <realm-name>jdbcRealm</realm-name>
          <form-login-config>
              <form-login-page>/login.xhtml</form-login-page>
              <form-error-page>/login.xhtml</form-error-page>
          </form-login-config>
      </login-config>
      <security-constraint>
          <web-resource-collection>
              <web-resource-name>Secure Pages</web-resource-name>
              <description/>
              <url-pattern>/admin/*</url-pattern>
          </web-resource-collection>
          <auth-constraint>
              <role-name>ADMINS</role-name>
          </auth-constraint>
      </security-constraint>

      Имя входа на основе формы указывается для всех веб-страниц в /admin. Доступ к этим страницам будет разрешён только пользователям с ролью ADMINS.

  7. Назначьте роли безопасности пользователям или группам пользователей в области.

    Чтобы назначить роль безопасности группе или пользователю, добавьте элемент сопоставления ролей безопасности в дескриптор развёртывания для конкретного сервера приложений, в данном случае glassfish-web.xml:

    <security-role-mapping>
        <role-name>USERS</role-name>
        <group-name>USERS</group-name>
    </security-role-mapping>
    <security-role-mapping>
        <role-name>ADMINS</role-name>
        <group-name>ADMINS</group-name>
    </security-role-mapping>

    Поскольку пользователи GlassFish Server назначаются в группы в процессе создания пользователя, это более эффективно, чем сопоставление ролей безопасности отдельным пользователям.


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