blob: 30b751ee3305a097b7d1a8415fd9f1322bb221b7 [file] [log] [blame]
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
= Обеспечение защиты веб-приложения в IDE NetBeans
:jbake-type: tutorial
:jbake-tags: tutorials
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Обеспечение защиты веб-приложения в IDE NetBeans - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Обеспечение защиты веб-приложения в IDE NetBeans
Составитель Дэн Колар (Dan Kolar). Обновляется Джеймсом Бранэмом (James Branam) и Джеффом Рубиноффом (Jeff Rubinoff).
Данный документ освещает основы добавления функций безопасности к веб-приложению, развернутому на сервере Oracle GlassFish Open Source Edition, Oracle WebLogic или Apache Tomcat.
В данном документе показано, как настроить проверку подлинности на компьютере с помощью простого окна входа и формы входа на веб-странице. В данном документе дан обзор действий для создания пользователей на сервере Tomcat и сервере GlassFish. После создания пользователей мы создадим роли безопасности, установив свойства безопасности в дескрипторе развертывания. Данный документ также показывает, как можно использовать проверку подлинности JDBC для обеспечения безопасности приложения при развертывании на сервере GlassFish.
*Ожидаемая продолжительность: _40_ минут*
image::images/netbeans-stamp-80-74-73.png[title="Содержимое этой страницы применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0"]
*Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.*
|===
|Программное обеспечение или материал |Требуемая версия
|link:https://netbeans.org/downloads/index.html[+IDE NetBeans+] |Версия Java EE
|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Комплект для разработчика на языке Java (JDK)+] |Версия 7 или 8
|Платформа Java EE |Java EE 6 или 7
|База данных TRAVEL |Не требуется
|Веб-сервер или сервер приложений, совместимый с Java EE |Веб-сервер Tomcat 7.x или 8.x, Oracle WebLogic 11g или
GlassFish Server Open Source Edition 4.x
|===
== Установка и настройка рабочей среды
Установите и запустите IDE NetBeans. С данным учебным курсом можно работать, используя имеющийся в комплекте среды сервер Tomcat или сервер GlassFish.
Убедитесь, что сервер установлен и экземпляр сервера зарегистрирован в среде IDE. Для регистрации установленного экземпляра сервера можно использовать диспетчер серверов. (Выберите Tools ("Сервис") > Servers ("Серверы") > Add Server ("Добавить сервер"). Выберите "GlassFish Server <номер версии>" или "Tomcat <номер версии> и нажмите кнопку Next ("Далее"). Нажмите кнопку Browse ("Обзор") и найдите каталог установки сервера приложений. Нажмите кнопку Finish ("Готово").)
== Создание веб-приложения
Мы начнем это упражнение с создания проекта веб-приложения и структуры каталогов. Затем мы создадим несколько простых файлов ``html`` в каждом из безопасных каталогов. Созданное веб-приложение использует простую проверку подлинности при входе, чтобы предотвратить несанкционированный доступ к защищенным каталогам. Если для проверки подлинности нужно использовать форму входа, то можно добавить страницу ``jsp`` с формой.
=== Создание безопасных каталогов
1. Выберите Файл > Создать проект (Ctrl-Shift-N), затем выберите 'Веб-приложение' в категории 'Веб' и нажмите 'Далее'.
2. Назовите проект ``WebApplicationSecurity`` . Примите параметры по умолчанию.
3. Установите флажок "Использовать отдельную папку для хранения библиотек" и укажите местоположение папки библиотек (необязательно). Дополнительные сведения об этой функции см. в разделе link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG455[+Предоставление общего доступа к библиотеке другим пользователям+] в документе _Разработка приложений в IDE NetBeans_.
4. Нажмите кнопку "Далее".
5. Выберите сервер, на котором требуется выполнить развертывание приложения. В списке представлены только те серверы, которые зарегистрированы в среде IDE. Нажмите кнопку "Далее".
6. В добавлении платформы нет необходимости, так что нажмите кнопку Finish ("Готово").
7. Если создано приложение EE 6 перейдите в окно 'Проекты' среды IDE, щелкните правой кнопкой мыши узел проекта и выберите 'Создать' > 'Другие' > Web > 'Стандартный дескриптор развертывания' (web.xml). Пройдите по этапам работы мастера, принимая параметры по умолчанию.
*Примечание.* В этом учебном курсе показано, как настроить параметры безопасности в дескрипторе развертывания, но приложения EE 6 и EE 7 по умолчанию используют аннотации вместо дескриптора развертывания.
. При использовании сервера GlassFish или WebLogic и IDE NetBeans 7.0.1 или более поздней версии необходимо создать дескриптор для этого сервера. Щелкните правой кнопкой мыши узел проекта и выберите New ("Создать") > Other ("Другое") > GlassFish > GlassFish Descriptor ("Дескриптор GlassFish"), либо New ("Создать") > Other ("Другое") > WebLogic > WebLogic Descriptor ("Дескриптор WebLogic"). Откроется диалоговое окно создание дескриптора для конкретного сервера. Примите параметры по умолчанию и нажмите кнопку "Готово". Дескриптор для конкретного сервера, именуемый ``glassfish-web.xml`` либо ``weblogic.xml`` , появится в папке Configuration Files ("Файлы настройки") проекта.
. В окне 'Проекты' в IDE щелкните правой кнопкой мыши 'Веб-страницы' и выберите 'Создать' > 'Другое'.
. В мастере создания новых файлов выберите Other ("Другое") в качестве категории и Folder ("Папка") в качестве типа файла. Нажмите кнопку "Далее".
.
В мастере создания новых папок назовите папку secureAdmin и нажмите кнопку Finish ("Готово").
Папка secureAdmin появится в окне Projects ("Проекты"), в папке Web Pages ("Веб-страницы").
. Повторите 3 предыдущих действия для создания еще одной папки, именуемой secureUser.
. Создайте новый файл ``html`` в папке secureUser. Для этого щелкните правой кнопкой мыши папку secureUser в окне 'Проекты' и выберите Создать > Другие.
. В категории 'Другие' выберите тип файла HTML. Нажмите кнопку "Далее".
. Назовите новый файл pageU и нажмите кнопку Finish ("Готово").
При нажатии этой кнопки файл ``pageU.html`` откроется в редакторе файлов исходного кода.
. В редакторе файлов исходного кода замените существующий код в файле ``pageU.html`` следующим кодом.[html-tag]#<html>
<head>
<title>#
[source,xml]
----
User secure area[html-tag]#</title>
</head>
<body>
<h1>#User Secure Area[html-tag]#</h1>
</body>
</html>#
----
. Щелкните правой кнопкой мыши папку secureAdmin и создайте новый файл ``html`` под названием pageA.
. В редакторе файлов исходного кода замените существующий код в ``pageA.html`` следующим кодом.[html-tag]#<html>
<head>
<title>#
[source,xml]
----
Admin secure area[html-tag]#</title>
</head>
<body>
<h1>#Admin secure area[html-tag]#</h1>
</body>
</html>#
----
=== Создание страницы индекса JSP
Теперь мы создадим страницу индекса JSP, содержащую ссылки на безопасные области. Если пользователь щелкнет такую ссылку, у него будут запрошены имя пользователя и пароль. В случае использования простого входа будет выведено окно входа по умолчанию используемого браузера. В случае использования страницы формы входа пользователь вводит имя пользователя и пароль в форму.
1. Откройте ``index.jsp`` в редакторе файлов исходного кода и добавьте следующие ссылки на ``pageA.html`` и ``pageU.html`` :[jsp-html-tag]#<p>#
[source,html]
----
Request a secure Admin page [jsp-html-tag]#<a# [jsp-html-argument]#href=#[jsp-xml-value]#"secureAdmin/pageA.html"#[jsp-html-tag]#>#here![jsp-html-tag]#</a></p>
<p>#Request a secure User page [jsp-html-tag]#<a# [jsp-html-argument]#href=#[jsp-xml-value]#"secureUser/pageU.html"# [jsp-html-tag]#>#here![jsp-html-tag]#</a></p>#
----
. Сохраните изменения.
=== Создание формы входа (обязательно для сервера Tomcat, не обязательно для сервера GlassFish или WebLogic)
Если вместо простого входа желательно использовать форму входа, то можно создать страницу ``jsp`` , содержащую форму. После этого можно указать страницы входа и ошибки при входе, в ходе <<Basic_login_config,настройки метода входа>>.
*Важно!* Для пользователей Tomcat создание формы входа обязательно.
1. В окне 'Проекты' щелкните правой кнопкой мыши папку 'Веб-страницы' и выберите 'Создать' > JSP.
2. Назовите файл ``login`` , оставьте значения по умолчанию для остальных полей и нажмите кнопку Finish ("Готово").
3. В редакторе файлов исходного кода вставьте следующий код между тегами ``<body>`` ``login.jsp`` .
[source,xml]
----
<[jsp-html-tag]#form# [jsp-html-argument]#action=#[jsp-xml-value]#"j_security_check"# [jsp-html-argument]#method=#[jsp-xml-value]#"POST"#[jsp-html-tag]#>#
Username:[jsp-html-tag]#<input# [jsp-html-argument]#type=#[jsp-xml-value]#"text"# [jsp-html-argument]#name=#[jsp-xml-value]#"j_username"#[jsp-html-tag]#><br>#
Password:[jsp-html-tag]#<input# [jsp-html-argument]#type=#[jsp-xml-value]#"password"# [jsp-html-argument]#name=#[jsp-xml-value]#"j_password"#[jsp-html-tag]#>
<input# [jsp-html-argument]#type=#[jsp-xml-value]#"submit"# [jsp-html-argument]#value=#[jsp-xml-value]#"Login"#[jsp-html-tag]#>
</form>#
----
. Создайте новый файл ``html`` под названием ``loginError.html`` в папке Web Pages ("Веб-страницы"). Это простая страница ошибки.
. В редакторе файлов исходного кода замените существующий код в ``loginError.html`` следующим кодом.[html-tag]#<html>
<head>
<title>#
[source,xml]
----
Login Test: Error logging in[html-tag]#</title>
</head>
<body>
<h1>#Error Logging In[html-tag]#</h1>
<br/>
</body>
</html>#
----
== Создание пользователей на целевом сервере
Чтобы в веб-приложениях можно было использовать безопасность на основе проверки подлинности с помощью имени пользователя и пароля (простой вход или вход на основе формы), для целевого пользователя необходимо определить пользователей и соответствующие роли для них. Для входа в систему на сервере на этом сервере должна существовать учетная запись пользователя.
Определения пользователей и ролей варьируются в зависимости от указанного целевого сервера. В данном руководстве для тестирования параметров безопасности используются определения ``admin`` и ``user`` . Необходимо подтвердить, что эти пользователи существуют на соответствующих серверах и что им назначены соответствующие роли.
=== Определение пользователей на сервере GlassFish
В этом сценарии нам нужно использовать консоль администрирования сервера GlassFish для создания двух новых пользователей, ``user`` и ``admin`` . У пользователя ``user`` будет ограниченный доступ к приложению, а у пользователя ``admin`` – права администратора.
1. Откройте консоль администрирования. Для этого перейдите в окно 'Службы' среды IDE и щелкните правой кнопкой мыши Серверы > Сервер GlassFish > Просмотр консоли администратора домена. В окне браузера откроется страница входа в систему сервера GlassFish. Для доступа к консоли администрирования необходимо войти, используя имя и пароль администратора.
*Примечание. * До получения доступа к консоли администрирования необходимо запустить сервер приложений. Чтобы запустить сервер, щелкните правой кнопкой мыши узел сервера GlassFish и выберите 'Пуск'.
. В консоли администрирования перейдите к Configurations ("Настройки") > server-config > Security ("Безопасность") > Realms ("Области") > File ("Файл"). Откроется панель редактирования области.
image::images/edit-realm.png[]
. Нажмите кнопку Manage Users ("Управлять пользователями") наверху панели редактирования области. Откроется панель File Users ("Пользователи файла").
image::images/file-users.png[]
. Нажмите кнопку New ("Создать"). Откроется панель New File Realm User ("Новый пользователь области файла"). Введите ``user`` в качестве идентификатора пользователя и ``userpw01`` в качестве пароля. Нажмите кнопку "ОК".
. Выполните приведенные выше действия, чтобы создать пользователя ``admin`` с паролем ``adminpw1`` в области ``file`` .
=== Определение ролей и пользователей на сервере Tomcat
При использовании Tomcat 7 создается пользователь с ролью сценария диспетчера и пароль для этого пользователя при регистрации сервера в IDE NetBeans.
Базовые пользователи и роли для сервера Tomcat содержатся в ``tomcat-users.xml`` . Файл ``tomcat-users.xml`` можно найти в каталоге ``_<CATALINA_BASE>_\conf`` .
*Примечание.* Расположение CATALINA_BASE можно определить, щелкнув правой кнопкой мыши узел сервера Tomcat в окне 'Службы' и выбрав 'Свойства'. Откроется окно свойств сервера. CATALINA_BASE расположен во вкладке Connection ("Подключение").
image::images/tomcat-properties.png[] image::images/catalina-base.png[]
*Примечание.* Если Tomcat 6 используется вместе с более ранними версиями IDE, этот сервер имеет ``ide`` , определенные пользователем с помощью пароля и администратора и диспетчера ролей. Пароль для пользователя ``ide`` создается при установке Tomcat 6. Пароль для пользователя ``ide`` можно изменить, либо скопировать его в ``tomcat-users.xml`` .
*Для добавления пользователей в Tomcat выполните следующие действия.*
1. Откройте в редакторе ``_<CATALINA_BASE>_/conf/tomcat-users.xml`` .
2. Добавьте роль под названием ``AdminRole`` .
[source,java]
----
<role rolename="AdminRole"/>
----
. Добавьте роль под названием ``UserRole`` .
[source,java]
----
<role rolename="UserRole"/>
----
. Добавьте пользователя с именем ``admin`` , паролем ``adminpw1`` и ролью ``AdminRole`` .
[source,java]
----
<user username="admin" password="adminpw1" roles="AdminRole"/>
----
. Добавьте пользователя с именем ``user`` , паролем ``userpw01`` и ролью ``UserRole`` .
[source,java]
----
<user username="user" password="userpw01" roles="UserRole"/>
----
Файл ``tomcat-users.xml`` теперь выглядит следующим образом:
[source,xml]
----
<tomcat-users>
<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
-->
...
<role rolename="AdminRole"/>
<role rolename="UserRole"/>
<user username="user" password="userpw01" roles="UserRole"/>
<user username="admin" password="adminpw1" roles="AdminRole"/>
[User with manager-script role, defined when Tomcat 7 was registered with the IDE]
...
</tomcat-users>
----
=== Определение ролей и групп на сервере WebLogic
В этой ситуации нам нужно использовать консоль администрирования сервера WebLogic для создания двух новых пользователей, ``user`` и ``admin`` . Добавьте этих пользователей к группам ``userGroup`` и ``adminGroup`` соответственно. Позже можно будет назначить роли безопасности для этих групп. У ``userGroup`` будет ограниченный доступ к приложению, а у ``adminGroup`` – права администратора.
Общие инструкции по добавлению пользователей и групп к серверу Web Logic можно найти в link:http://download.oracle.com/docs/cd/E21764_01/apirefs.1111/e13952/taskhelp/security/ManageUsersAndGroups.html[+Интерактивной справке по консоли администрирования+] WebLogic.
*Чтобы добавить пользователей и группы "user" и "admin" к WebLogic, выполните следующие действия:*
1. Откройте консоль администрирования, перейдя в окно 'Службы' среды IDE и щелкнув правой кнопкой мыши 'Серверы' > 'Сервер WebLogic' > 'Просмотр консоли администратора'. В окне браузера откроется страница входа в систему сервера GlassFish. Для доступа к консоли администрирования необходимо войти, используя имя и пароль администратора.
*Примечание. * До получения доступа к консоли администрирования необходимо запустить сервер приложений. Чтобы запустить сервер, щелкните правой кнопкой мыши узел сервера WebLogic и выберите 'Пуск'.
. В левой панели выберите Security Realms ("Области безопасности"). Откроется страница сводки областей безопасности.
. На этой странице выберите имя области безопасности (имя по умолчанию – "myrealm"). Откроется страница Settings for Realm Name ("Настройки имени области").
. На этой странице выберите Users and Groups ("Пользователи и группы") > Users ("Пользователи"). Появится таблица пользователей.
. В таблице пользователей щелкните New ("Создать"). Откроется страница создания нового пользователя.
. Введите там имя "user" и пароль "userpw01". Если хочется, введите описание пользователя. Примите поставщика проверки подлинности по умолчанию.
image::images/wl-admin-newuser.png[]
. Нажмите кнопку "ОК". Мы вернемся к таблице пользователей.
. Щелкните New ("Создать") и добавьте пользователя с именем"admin" и паролем "admin1".
. Откройте вкладку Groups ("Группы"). Появится таблица групп.
. Нажмите кнопку New ("Создать"). Откроется окно создания новой группы.
. Назовите группу userGroup. Примите поставщика по умолчанию и нажмите кнопку "OK". Это вернет нас к таблице групп.
. Щелкните New ("Создать") и создайте группу adminGroup.
. Откройте вкладку Users ("Пользователи") для следующей процедуры.
Теперь добавьте пользователя ``admin`` к ``adminGroup`` и пользователя ``user`` к ``userGroup`` .
Для добавления пользователей к группам:
1. На вкладке Users ("Пользователи") щелкните пользователя ``admin`` . Откроется страница параметров пользователя.
2. На этой странице откройте вкладку Groups ("Группы").
3. В таблице Parent Groups: Available: ("Родительские группы: Доступные") выберите ``adminGroup`` .
4. Щелкните стрелку вправо >. ``adminGroup`` появится в таблице Parent Groups: Chosen: ("Родительские группы: Выбранные:").
image::images/wl-admin-usersettings.png[]
. Нажмите кнопку "Сохранить".
. Вернитесь на вкладку Users ("Пользователи").
. Щелкните пользователя ``user`` и добавьте его к ``userGroup`` .
== Настройка метода входа
При настройке метода входа для приложения для проверки подлинности при простом входе можно использовать окно входа, предоставляемое браузером. Либо можно создать веб-страницу с формой входа. Оба типа проверки подлинности при входе основаны на использовании имени пользователя/пароля.
Для настройки входа следует создать _ограничения безопасности _и назначить роли этим ограничениям безопасности. Ограничения безопасности определяют набор файлов. При назначении роли ограничению безопасности пользователи с этой ролью получат доступ к набору файлов, определенных ограничением. Для примера, в этом учебном курсе мы назначаем AdminRole ограничению AdminConstraint, а ограничению UserConstraint – и UserRole и AdminRole. Это означает, что у пользователей с AdminRole будет доступ к файлам и для администраторов и для простых пользователей, а у пользователей с UserRole – только к файлам для пользователей.
*Примечание.* Доступ с отдельной ролью администратора к файлам пользователя предоставляется редко. Как вариант, можно назначить UserConstraint только UserRole, а на стороне сервера предоставить AdminRole конкретным пользователям, которые также являются администраторы. Лучший способ предоставления доступа зависит от конкретной ситуации.
Настройка метода входа для приложения выполняется посредством настройки ``web.xml`` . Файл ``web.xml`` может быть найден в каталоге Configuration Files ("Файлы конфигурации") окна Projects ("Проекты").
=== Простой вход
При использовании простого входа окно входа предоставляется браузером. Для доступа к защищенному содержимому необходимы правильные имя пользователя и пароль.
Ниже показано, как настроить простой вход для серверов GlassFish и WebLogic. Пользователям Tomcat необходимо использовать <<form-login,форму входа>>.
*Для настройки простого входа выполните следующие действия.*
1. В окне 'Проекты' разверните узел 'Файлы конфигурации' и дважды щелкните ``web.xml`` . В визуальном редакторе откроется файл ``web.xml`` .
2. Щелкните Security ("Безопасность") на панели инструментов, чтобы открыть файл в представлении безопасности.
3. Разверните узел Login Configuration ("Конфигурация входа") и установите настройку входа на Basic ("Простая").
*Примечание. * Если необходимо использовать формы, выберите 'Форма', а не 'Основные' и укажите имя входа и страницы входа с ошибками.
. Введите имя области, в зависимости от используемого сервера.
* *GlassFish:* введите ``file`` в поле Realm Name ("Имя области"). Это имя области по умолчанию при создании пользователей на сервере GlassFish.
* *Tomcat:* не вводите имя области.
* *WebLogic:* введите имя своей области. Областью по умолчанию является ``myrealm`` .
image::images/security-roles.png[]
. Разверните узел Security Roles ("Роли безопасности") и нажмите кнопку Add ("Добавить") для добавления имени роли.
. Добавьте следующие роли безопасности:
* ``AdminRole`` . Пользователи, добавленные к этой роли, получат доступ к каталогу ``secureAdmin`` на сервере.
* ``UserRole`` . Пользователи, добавленные к этой роли, получат доступ к каталогу ``secureUser`` на сервере.
*Внимание!* Имена ролей GlassFish должны начинаться с прописной буквы.
. Создайте и настройте ограничение безопасности под названием ``AdminConstraint`` , выполнив следующее:
1. Щелкните Add Security Constraint ("Добавить ограничение безопасности"). Появится раздел для нового ограничения безопасности.
2. Введите ``AdminConstraint`` в качестве Display Name ("Отображаемое имя") нового ограничения безопасности.
image::images/admin-constraint.png[]
. Нажмите кнопку "Add". Откроется диалоговое окно Add Web Resource ("Добавление веб-ресурса").
.
В этом диалоговом окне установите Resource Name ("Имя ресурса") на ``Admin`` и шаблон URL на ``/secureAdmin/*`` , после чего нажмите кнопку "OK". Диалоговое окно закроется.
*Примечание. * При использовании звездочки (*), пользователю предоставляется доступ ко всем файлам в этой папке.
image::images/addwebresource.png[]
. Выберите Enable Authentication Constraint ("Включить ограничение проверки подлинности") и нажмите кнопку Edit ("Изменить"). Откроется диалоговое окно изменения имен роли.
. В этом окне выберите AdminRole на левой панели, нажмите кнопку Add ("Добавить"), затем нажмите кнопку OK.
После завершения этих действий результат должен быть подобен этому рисунку:
image::images/constraints.png[]
. Создайте и настройте ограничение безопасности под названием ``UserConstraint`` , выполнив следующее:
1. Щелкните Add Security Constraint ("Добавить ограничение безопасности"), чтобы добавить новое ограничение безопасности.
2. Введите ``UserConstraint`` в качестве Display Name ("Отображаемое имя") нового ограничения безопасности.
3. Нажмите кнопку Add ("Добавить") для добавления Web Resource Collection ("Коллекция веб-ресурсов").
4. В диалоговом окне добавления ресурсов установите Resource Name ("Имя ресурса") на ``User`` и шаблон URL на ``/secureUser/*`` , после чего нажмите кнопку "OK".
5. Выберите Enable Authentication Constraint ("Включить ограничение проверки подлинности") и нажмите кнопку Edit ("Изменить"), чтобы изменить поле Role Name ("Имя роли").
6. В диалоговом окне изменения имени роли выберите AdminRole и UserRole на левой панели, нажмите кнопку Add ("Добавить"), затем нажмите кнопку OK.
Примечание. Также можно задать время ожидания для сеанса в web.xml. Для настройки времени ожидания щелкните вкладку General ("Общие") визуального редактора и укажите, сколько должен продолжаться сеанс. Продолжительность по умолчанию – 30 минут.
=== Вход с помощью формы
Использование формы для входа позволяет настраивать содержимое страниц входа и ошибки входа. Этапы настройки входа с помощью формы идентичны настройке простого входа, за исключением того, что надо указать созданные страницы <<loginform,входа и ошибки>>.
Настройка формы входа показана ниже:
1. В окне 'Проекты' дважды щелкните ``web.xml`` , расположенный в каталоге ``Веб-страницы/WEB-INF`` , чтобы открыть файл в Visual Editor.
2. Щелкните Security ("Безопасность") на панели инструментов, чтобы открыть файл на панели безопасности и развернуть узел Login Configuration ("Настройка входа").
3. Установите настройку входа на Form ("Форма").
4. Установите Form Login Page ("Страница входа с помощью формы"), щелкнув Browse ("Просмотр") и найдя ``login.jsp`` .
5.
Установите Form Login Page ("Страница ошибки входа с помощью формы"), щелкнув Browse ("Просмотр") и найдя ``loginError.html`` .
image::images/login-forms.png[]
. Введите имя области, в зависимости от используемого сервера.
* *GlassFish:* введите ``file`` в поле Realm Name ("Имя области"). Это имя области по умолчанию при создании пользователей на сервере GlassFish.
* *Tomcat:* не вводите имя области.
* *WebLogic:* введите имя своей области. Областью по умолчанию является ``myrealm`` .
. Разверните узел Security Roles ("Роли безопасности") и нажмите кнопку Add ("Добавить") для добавления имени роли.
. Добавьте следующие роли безопасности:
|===
|Роль сервера |Описание
|AdminRole |Пользователи, добавленные к этой роли, получат доступ к каталогу `` secureAdmin`` на сервере.
|UserRole |Пользователи, добавленные к этой роли, получат доступ к каталогу ``secureUser`` на сервере.
|===
. Создайте и настройте ограничение безопасности под названием ``AdminConstraint`` , выполнив следующее:
1. Щелкните Add Security Constraint ("Добавить ограничение безопасности"), чтобы добавить новое ограничение безопасности.
2. Введите ``AdminConstraint`` в качестве Display Name ("Отображаемое имя") нового ограничения безопасности.
3. Нажмите кнопку Add ("Добавить") для добавления Web Resource Collection ("Коллекция веб-ресурсов").
4.
В этом диалоговом окне установите Resource Name ("Имя ресурса") на ``Admin`` и шаблон URL на ``/secureAdmin/*`` , после чего нажмите кнопку "OK".
*Примечание. * При использовании звездочки (*), пользователю предоставляется доступ ко всем файлам в этой папке.
image::images/addwebresource.png[]
. Выберите Enable Authentication Constraint ("Включить ограничение проверки подлинности") и нажмите кнопку Edit ("Изменить"). Откроется диалоговое окно изменения имен роли.
. В этом окне выберите AdminRole на левой панели, нажмите кнопку Add ("Добавить"), затем нажмите кнопку OK.
После завершения этих действий результат должен быть подобен этому рисунку:
image::images/constraints.png[]
. Создайте и настройте ограничение безопасности под названием ``UserConstraint`` , выполнив следующее:
1. Щелкните Add Security Constraint ("Добавить ограничение безопасности"), чтобы добавить новое ограничение безопасности.
2. Введите ``UserConstraint`` в качестве Display Name ("Отображаемое имя") нового ограничения безопасности.
3. Нажмите кнопку Add ("Добавить") для добавления Web Resource Collection ("Коллекция веб-ресурсов").
4. В диалоговом окне добавления ресурсов установите Resource Name ("Имя ресурса") на ``User`` и шаблон URL на ``/secureUser/*`` , после чего нажмите кнопку "OK".
5. Выберите Enable Authentication Constraint ("Включить ограничение проверки подлинности") и нажмите кнопку Edit ("Изменить"), чтобы изменить поле Role Name ("Имя роли").
6. В диалоговом окне изменения имени роли выберите AdminRole и UserRole на левой панели, нажмите кнопку Add ("Добавить"), затем нажмите кнопку OK.
Примечание. Также можно задать время ожидания для сеанса в web.xml. Для настройки времени ожидания щелкните вкладку General ("Общие") визуального редактора и укажите, сколько должен продолжаться сеанс. Продолжительность по умолчанию – 30 минут.
== Настройка дескрипторов развертывания сервера
В случае развертывания приложения на сервере GlassFish или WebLogic, необходимо настроить дескриптор развертывания сервера, чтобы он соответствовал ролям безопасности, определенным в ``web.xml`` . Дескриптор развертывания сервера указан в узле Configuration Files ("Файлы конфигурации") созданного проекта в окне Projects ("Проекты").
=== Настройка дескриптора развертывания сервера GlassFish
Дескриптор развертывания сервера GlassFish именуется ``glassfish-web.xml`` . Дескриптор развертывания сервера в папке Configuration Files ("Файлы конфигурации"). Если отсутствует, создайте его, щелкнув правой кнопкой мыши узел проекта и перейдя в 'Создать' > 'Другие' > GlassFish > 'Дескриптор развертывания GlassFish'. Примите все параметры по умолчанию.
Обратите внимание, что значения, введенные в ``web.xml`` , отображаются в ``glassfish-web.xml`` . Среда IDE извлекает эти значения из ``web.xml`` для нас.
*Для настройки дескриптора развертывания GlassFish:*
1. В окне 'Проекты' разверните узел 'Файлы конфигурации' и дважды щелкните ``glassfish-web.xml`` . Дескриптор развертывания ``glassfish-web.xml`` открывается в специальном редакторе со вкладками для дескрипторов развертывания GlassFish.
*Примечание.* Для сервера GlassFish с более поздними версиями, чем 3.1, для этого файла задается имя ``sun-web.xml`` .
. Выберите вкладку Security ("Безопасность") для раскрытия ролей безопасности.
. Выберите узел роли безопасности AdminRole, чтобы открыть страницу Security Role Mapping ("Сопоставление ролей безопасности").
.
Щелкните Add Principal ("Добавить участника") и введите ``admin`` в качестве имени участника. Нажмите кнопку "ОК".
image::images/add-principal.png[]
. Выберите узел роли безопасности UserRole, чтобы открыть страницу Security Role Mapping ("Сопоставление ролей безопасности").
. Щелкните Add Principal ("Добавить участника") и введите ``user`` в качестве имени участника. Нажмите кнопку "OK".
. Сохраните изменения в ``glassfish-web.xml`` .
``glassfish-web.xml`` также можно просматривать и редактировать в редакторе XML, щелкнув вкладку XML. Если открыть ``glassfish-web.xml`` в редакторе XML, то можно будет увидеть, что ``glassfish-web.xml`` содержит следующую информацию о сопоставлении ролей безопасности:
[xml-tag]#<security-role-mapping>
<role-name>#
[source,xml]
----
AdminRole[xml-tag]#</role-name>
<principal-name>#admin[xml-tag]#</principal-name>
</security-role-mapping>
<security-role-mapping>
<role-name>#UserRole[xml-tag]#</role-name>
<principal-name>#user[xml-tag]#</principal-name>
</security-role-mapping>#
----
=== Настройка дескриптора развертывания сервера WebLogic
Дескриптор развертывания WebLogic именуется ``weblogic.xml`` . На данный момент <<gf-dd,поддержка дескрипторов развертывания GlassFish>> в среде IDE не распространяется на дескрипторы развертывания WebLogic. Поэтому все изменения в ``weblogic.xml`` необходимо будет внести вручную.
Дескриптор развертывания сервера WebLogic в папке Configuration Files ("Файлы конфигурации"). Если отсутствует, создайте его, щелкнув правой кнопкой мыши узел проекта и перейдя в 'Создать' > 'Другие' > WebLogic > 'Дескриптор развертывания WebLogic'. Примите все параметры по умолчанию.
*Примечание.* Дополнительную информацию об обеспечении безопасности веб-приложений в WebLogic, включая декларативную и программную безопасность, можно найти в link:http://download.oracle.com/docs/cd/E21764_01/web.1111/e13711/thin_client.htm[+Oracle Fusion Middleware Programming Security for Oracle WebLogic Server ("Программная безопасность Oracle Fusion Middleware для Oracle WebLogic Server")+].
Для настройки дескриптора развертывания WebLogic:
1. В окне 'Проекты' разверните узел 'Файлы конфигурации' и дважды щелкните ``weblogic.xml`` . Дескриптор развертывания ``weblogic.xml`` откроется в редакторе.
2. Внутри элемента ``<weblogic-web-app>`` введите или скопируйте следующие элементы назначения роли безопасности:[xml-tag]#<security-role-assignment>
<role-name>#
[source,xml]
----
AdminRole[xml-tag]#</role-name>
<principal-name>#adminGroup[xml-tag]#</principal-name>
</security-role-assignment>
<security-role-assignment>
<role-name>#UserRole[xml-tag]#</role-name>
<principal-name>#userGroup[xml-tag]#</principal-name>
</security-role-assignment>#
----
. Сохраните изменения в ``weblogic.xml`` .
== Развертывание и выполнение приложения
В окне "Проекты" щелкните правой кнопкой мыши узел проекта и выберите команду "Выполнить".
*Примечание.* По умолчанию, проект создается с включенной функцией 'Компилировать при сохранении', так что не нужно сначала компилировать код. Дополнительные сведения о функции "Компилировать при сохранении" см. в разделе link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG510[+Сборка проектов Java+] в _Руководстве по разработке приложений в IDE NetBeans_.
После сборки приложения и развертывания его на сервере в веб-браузере откроется начальная страница. Выберите безопасную область, к которой необходимо получить доступ, щелкнув *admin* либо *user*.
image::images/deploy1.png[]
После ввода имени пользователя и пароля возможны следующие результаты:
* Пароль пользователя верен и у пользователя есть права на доступ к защищенному содержимому -> отобразится страница защищенного содержимого.
image::images/deploy2.png[]
*
Пароль пользователя неверен -> отобразится страница ошибки.
image::images/deploy3.png[]
*
Пароль пользователя верен, но у пользователя нет прав на доступ к защищенному содержимому -> браузер выведет ошибку 403, "В доступе к запрошенному ресурсу отказано".
image::images/deploy4.png[]
== Заключение
В этом учебном курсе мы создали веб-приложение. Затем мы изменили настройки его безопасности, используя редакторы дескрипторов web.xml и glassfish-web.xml, создав веб-страницы с безопасным входом и несколькими удостоверениями.
== Дополнительные сведения
* link:quickstart-webapps.html[+Введение в разработку веб-приложений+]
* link:../../trails/java-ee.html[+Учебная карта по Java EE и Java Web+]
|===
|
link:/about/contact_form.html?to=3&subject=Feedback: Securing a Web Application[+Отправить отзыв по этому учебному курсу+]
|===