Продолжим настройку серверной части 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(