В сервере glassfish присутствует система realms, которые определяют policy domain для сервера. Настройка базовой аутентификации происходит в file realm. Для настройки необходимо:
1. Перейти в Server Config->Security->Realms->File и добавить в группы пользователей новую группу (Assign Groups) (рисунок 2).
При редактировании realm, можно указать следующие параметры:
JAAS Context – идентификатор для модуля логина, используемый данным realm.
Key File – полный путь и имя файла, где сервер хранит всех пользователей, группы и информацию о пароле для данного realm.
Assign Groups – добавить списки пользователей на realm.
Рисунок 2 – Добавление новой группы пользователей в File realm
2. Нажать на кнопку Manage Users и добавить пользователя, принадлежащего к созданной группе users (рисунок 3)
При редактировании пользователей можно редактировать следующие параметры:
User ID – id пользователя.
Group List – группы, к которым принадлежит пользователь
New Password – новый пароль пользователя.
Confirm New Password – подтвердить пароль пользователя.
Рисунок 3 – Добавление нового пользователя File Realm
3. На консоли администратора во вкладке Security установить галочку напротив Enable Security Manager (рисунок 4).
Рисунок 4 – Security Manager Enabled
4. Перезагрузить сервер GlassFish
Конфигурация приложения
После настройки сервера следует настройка приложения. Для этого нужно открыть папку установленного на сервер приложения в …\glassfish\domains\имя_вашего_domain\applications\имя_вашего_приложения\WEB-INF\. В папке WEB-INF будут находиться файлы web.xml и sun-web.xml в которых будет проводиться дальнейшая конфигурация. Необходимо выполнить следующие настройки:
1. Открыть файл web.xml, который является дескриптором развёртывания и добавить необходимые параметры:
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<security-constraint>
<web-resource-collection>
<web-resource-name>Simple Web Resource</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>file</realm-name>
</login-config>
</web-app>
В дескрипторе развертывания находятся и были добавлены следующие параметры:
<?xml version="1.0" encoding="UTF-8"?> - заголовок, содержащий версию xml и кодировку.
<web-app></web-app> - тэг web-app задает пространство для описания параметров конфигурации приложения, а также задает версию XML схемы и синтаксис, которому она должна следовать.
<security-constraint></security-constraint> -тэг security-constraint используется для определения привилегий доступа коллекций ресурсов, используя их URL mapping.
<web-resource-collection></web-resource-collection> -тэг web-resource-collection определяет коллекцию вэб ресурсов, для которых происходит настройка.
<web-resource-name></web-resource-name> - тэг web-resource-name определяет имя вэб ресурса.
<url-pattern></url-pattern> -тэг url-pattern определяет указанный URL как защищенный.
<http-method></http-method> -тэг http-method определяет какие http методы будут защищены. Для данного ресурса это POST и GET.
<auth-constraint></auth-constraint> -тэг auth-constraint определяет требования для аутентификации и имена ролей, которые будут иметь доступ к указанным URL.
<role-name></role-name> -тэг role-name определяет имя роли в auth-constraint.
<login-config></login-config> -тэг login-config описывает механизм аутентификации.
<auth-method></auth-method> - тэг auth-method определяет метод аутентификации. В данном случае используется BASIC.
<realm-name></realm-name> -тэг realm-name указывает на имя realm, который будет использоваться когда выбрана схема аутентификации.
2. Открыть файл sun-web.xml и добавить необходимые параметры.
sun-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd">
<sun-web-app error-url="">
<security-role-mapping>
<role-name>users</role-name>
<group-name>users</group-name>
</security-role-mapping>
</sun-web-app>
sun-web – файл дескриптора для имплементации специфических возможностей сервера. На более поздних версиях glassfish был заменен на glassfish-web. Он содержит следующие параметры:
<?xml version="1.0" encoding="UTF-8"?> - заголовок, содержащий версию xml и кодировку.
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd"> - заголовок, обозначающий версию используемого сервера приложений и сервлета.
<sun-web-app error-url=""></sun-web-app> -тэг, определяющий специфиеческую конфигурацию для веб приложения Sun Java System Web Server.
<security-role-mapping></security-role-mapping> - соотносит роли к пользователям или группам пользователей в текущем realm.
<role-name></role-name> - имя роли.
<group-name></group-name> - имя группы.