Java

         

Продолжим настройку серверной части JAAS, простейший серверный логин-модуль.


Для настройки домена контроля доступа на сервере, мы воспользуемся логин-модулем, реализованным классом org.jboss.security.auth.spi.UsersRolesLoginModule. Данным модулем удобно пользоваться в процессе разработки системы, в силу простоты его использования, но для "production" системы, вы скорее всего воспользуетесь более "продвинутым" вариантом, который описан в конце статьи.

Для работы он использует два файла. Первый файл должен иметь название - users.properties. Он используется для хранения на сервере имени пользователей и их пароли, которые будут проверяться сервером на "совпадение" с теми значениями, которые будут предоставлены клиентами.

Второй файл должен иметь название - roles.properties. Он используется для хранения на сервере "ролей-прав". Эти права назначаются (относятся) к именам пользователей, которые предварительно описаны в файле users.properties . Все подробности об этих файлах я напишу немного позже.

В запускаемой вами конфигурации есть уже готовая настройка логин-модуля, если вы загляните в файл:

........\jboss\server\my_configuration\conf\login-config.xml

Внутри данного файла вы должны увидеть несколько настроенных "доменов контроля доступа", один из них приблизительно такой:

login-config.xml

.......................... <application-policy name =
"other"> <authentication> <login-module code = "org.jboss.security.auth.spi.UsersRolesLoginModule" flag = "required" /> </authentication> </application-policy> .........................

Как видите данный контроллер имеет название "other" и использует JAAS логин-модуль, реализованный в классе org.jboss.security.auth.spi.UsersRolesLoginModule. Данный логин-модуль использует ДВА файла свойств для хранения имен пользователей, паролях и ролях-разрешениях.

Вы можете дать этому домену другое название в указанном XML файле, или использовать название указанное по умолчанию (other). Мы будем использовать указанное. Тогда наши JBoss файлы-дескрипторы для EJB модулей будут выглядеть так:


jboss.xml

<?xml version="1.0"?> <jboss> <security-domain>java:/jaas/other<
/security-domain> <enterprise-beans> ................<!-- ЗДЕСЬ ОПИСАНЫ БИНЫ -->

</enterprise-beans> ................ <jboss>

Теперь, если вы попробуете вызвать метод вашего бина из клиента, то скорее всего получите следующее сообщение об ошибке в лог-файле сервера:

server.log

2004-03-07 11:35:05,602 ERROR
[org.jboss.security.auth.spi.UsersRolesLoginModule] Failed to load users/passwords/
role files java.io.IOException: Properties file users.properties
not found at org.jboss.security.auth.spi.
UsersRolesLoginModule.loadProperties(

UsersRolesLoginModule.java) ..........................

Это говорит о том на клиенте мы воспользовались одним из JAAS логин-модулем. При этом клиент выполнял вход в систему с использованием JAAS логин-модуля на основе класса ClientLoginModule. Затем эта информация для идентификации пользователя была передана на сервер.

После чего была выполнена попытка инициализации "домена контроля доступа" при обращении к методам EJB, с использованием подключенного в ejb-jar.xml файле "другого" домена контроля доступа на основе JAAS. Этот серверный домен реализован в классе UsersRolesLoginModule. Но при попытке сервера считать информацию об "имени и пароле" для выполенения идентификации пользователя, на сервере произошла ошибка. Для устранения ошибки нам необходимо продолжить настройку и поместить данную информацию на сервер. Для этого в каталоге нашей конфигурации мы создаем файл ...\jboss\server\my_configuration\conf\users.properties со следующим содержимым:

test=testpass #также можно поместить имена других пользователей и их пароли user2=password2

Теперь, выполнив доступ к серверу, вы скорее всего получите следующую ошибку в логе сервера:

server.log

2004-03-07 11:35:53,000 ERROR [org.
jboss.security.auth.spi.UsersRolesLoginModule] Failed to load users/passwords/
role files java.io.IOException: Properties file roles.properties
not found at org.jboss.security.auth.spi.
UsersRolesLoginModule.loadProperties(


Содержание раздела