Третья и заключительная заметка, в которой мы коснёмся ещё одного достаточно популярного сервера приложений - Apache TomEE (для целей заметки использовалась версия 1.5.1 Plus). На всякий случай вот ссылки на первые две заметки: эта о GlassFish 3, а эта о JBoss AS 7.
Как обычно, начнём с настройки соединения с базой данных PostgreSQL. Откройте файл $TOMEE_HOME/conf/tomee.xml и добавьте ещё один ресурс:
Как обычно, начнём с настройки соединения с базой данных PostgreSQL. Откройте файл $TOMEE_HOME/conf/tomee.xml и добавьте ещё один ресурс:
<Resource id="jdbc/AuthDemoDS" type="DataSource"> JdbcDriver org.postgresql.Driver JdbcUrl jdbc:postgresql://localhost:5432/authdemo UserName postgres Password changeit JtaManaged true </Resource>
Драйвер базы данных положите в каталог $TOMEE_HOME/lib.
Переходим непосредственно к настройке аутентификации. Откройте файл $TOMEE_HOME/conf/server.xml и найдите в этом файле realm с именем класса
Переходим непосредственно к настройке аутентификации. Откройте файл $TOMEE_HOME/conf/server.xml и найдите в этом файле realm с именем класса
org.apache.catalina.realm.LockOutRealm
Внутри него мы определим наш собственный realm:
<Realm className="org.apache.catalina.realm.JAASRealm" appName="AuthDemoApp" userClassNames="org.apache.openejb.core.security.jaas.UserPrincipal" roleClassNames="org.apache.openejb.core.security.jaas.GroupPrincipal"> </Realm>
В атрибуте appName мы сослались на несуществующий пока сценарий аутентификации "AuthDemoApp". Опишем этот сценарий в файле login.config. Создайте его в каталоге $TOMEE_HOME/conf. Содержимое файла login.config:
AuthDemoApp { org.apache.openejb.core.security.jaas.SQLLoginModule required dataSourceName="jdbc/AuthDemoDS" userSelect="SELECT user, password FROM credentials WHERE username = ?" groupSelect="SELECT user, role FROM user_roles WHERE username = ?"; };
Заметьте, что в параметре dataSourceName мы указали описанный нами ранее в файле tomee.xml источник данных.
Чтобы подробнее узнать о параметрах, принимаемых тем или иным модулем логина, обратитесь к его документации. В данном случае мы определили только самые необходимые: JNDI-имя источника данных и два SQL-запроса для выборки имён и паролей пользователей, а также присвоенных пользователям ролей.
Последнее, что нам осталось сделать - это объяснить JVM, где лежит наш сценарий аутентификации. Для этого в каталоге $TOMEE_HOME/bin создайте файл setenv.sh с правами на выполнение и впишите в него следующую строку:
Последнее, что нам осталось сделать - это объяснить JVM, где лежит наш сценарий аутентификации. Для этого в каталоге $TOMEE_HOME/bin создайте файл setenv.sh с правами на выполнение и впишите в него следующую строку:
CATALINA_OPTS="$CATALINA_OPTS -Djava.security.auth.login.config=$CATALINA_HOME/conf/login.config"
Традиционно, если вдруг случится так, что функциональность стандартных модулей логина вас не устроит, вы всегда можете создать свой собственный, упаковать его в JAR и положить в каталог $TOMEE_HOME/lib. После этого можете смело указывать класс вашего модуля логина в сценариях аутентификации.
Засим откланяюсь. Приятного вам программирования.
Засим откланяюсь. Приятного вам программирования.
Комментариев нет:
Отправить комментарий