| // |
| // 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[+Отправить отзыв по этому учебному курсу+] |
| |
| |
| |=== |