Java

       

Пример логин-модуля контроля доступа, использующий СУБД.


Теперь я расскажу, как настроить более удобный домен контроля доступа с использованием СУБД.

Обратимся с очередной раз к файлу настроек контроля доступа - ....\jboss\server\my_configuration\conf\login-config.xml . В данный файл мы поместим еще один серверный домен контроля доступа, который использует СУБД. Настроенный домен будет основан на использовании готового класса - org.jboss.security.auth.spi.DatabaseServerLoginModule. Пример описания домена и его параметры таковы:

login-config.xml

............... <application-policy name = "
databaseSecurityDomain"> <authentication> <login-module code = "org.jboss.
security.auth.spi.DatabaseServerLoginModule" flag = "required"> <module-option name = "dsJndiName">java:
/jdbc/FirebirdDS</module-option> <module-option name = "
principalsQuery"> select USER_PASSWORD from
USERS where NAME=? </module-option> <module-option name = "
rolesQuery"> select ROLE_NAME, 'Roles'
from USERS u ..... ................ and u.name=? </module-option> <module-option name = "
debug">true</module-option> </login-module> </authentication> </application-policy> ...........................

JNDI имя указанного домена контроля доступа - databaseSecurityDomain, вы можете указать любое другое имя, но именно это имя вы будете указывать в ejb-jar.xml в виде - java:/jaas/databaseSecurityDomain.

jboss.xml

<?xml version="1.0"?> <jboss> <security-domain>java:/jaas/
databaseSecurityDomain</security-domain>

<enterprise-beans> ................<!-- ЗДЕСЬ ОПИСАНЫ БИНЫ --> </enterprise-beans> ................ <jboss>

Данному модулю для корректной работы требуется три обязательных параметра. Если быть до конца точным, обязательный параметр один -JNDI имя пула, но тогда данные будут выбираться из таблиц с именами "по умолчанию" и с предопределенной структурой, а из каких именно - вы скорее всего не узнаете, пока не прочтете в документации.



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