Данная статья рассмотрит последовательность шагов для настройки LDAP в Wildfly, запущенном в режиме домена с несколькими сервер группами.
В режиме домена есть своя специфика в отличии от standalone, а именно наличие двух файлов конфигурации: domain.xml и host.xml
В файле host.xml необходимо описать область безопасности и исходящие соединения, а в файле domain.xml для конкретного профиля на основании которого создана сервер группа, для которой мы подключаем LDAP – необходимо описать домен безопасности. Имя области должно соответствовать имени домена, это обязательное условие.
Пример записей из файла host.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<security-realms> ... <security-realm name="LdapRealmTest"> <authentication> <ldap connection="LdapTest" base-dn="dc=ldapserver,dc=ru"> <username-filter attribute="sAMAccountName"/> </ldap> </authentication> </security-realm> ... </security-realms> ... <outbound-connections> ... <ldap name="LdapTest" url="ldap://ldapserver.ru:389"> <properties> <property name="com.sun.jndi.ldap.connect.timeout" value="1000" /> <property name="com.sun.jndi.ldap.read.timeout" value="2000" /> </properties> </ldap> ... </outbound-connections> ... |
Пример записей из файла domain.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<subsystem xmlns="urn:jboss:domain:security:1.2"> ... <security-domains> <security-domain name="LdapRealmTest"> <audit> <provider-module code="LogAuditProvider"/> </audit> <authentication> <login-module code="LdapExtended" flag="required"> <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/> <module-option name="java.naming.provider.url" value="ldap://ldapserver.ru:389"/> <module-option name="bindDN" value="cn=wfladmin,ou=wfl_users,ou=it,dc=ldapserver,dc=ru"/> <module-option name="bindCredential" value="**********"/> <module-option name="baseCtxDN" value="dc=ldapserver,dc=ru"/> <module-option name="baseFilter" value="(sAMAccountName={0})"/> <module-option name="rolesCtxDN" value="ou=Wildfly,ou=Security Groups,dc=ldapserver,dc=ru"/> <module-option name="roleFilter" value="(member={1})"/> <module-option name="roleAttributeID" value="name"/> </login-module> </authentication> </security-domain> </security-domains> </subsystem> |
Теги:
bindDN и bindCredential содержат информацию об имени и пароле для учётной записи, от которой будет осуществляться доступ к Ldap серверу;
baseCtxDN описывает область видимости с которой начинается поиск пользователя для аутентификации;
rolesCtxDN описывает область видимости с которой начинается поиск группы, в которую входит пользователь (имя группы соответствует имени роли в приложении);
Для активирования ролевой политики в рамках дескрипторов развёртывания приложения необходимо добавить соответствующие теги, указав описанный ранее домен безопасности.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<security-constraint> <web-resource-collection> <web-resource-name>HtmlAuth</web-resource-name> <description>application security constraints</description> <url-pattern>/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <role-name>LDAPgroup</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> <realm-name>LdapRealmTest</realm-name> </login-config> <security-role> <role-name>LDAPgroup</role-name> </security-role> |
1 2 3 4 |
<jboss-web> <security-domain>LdapRealmTest</security-domain> <use-jboss-authorization>true</use-jboss-authorization> </jboss-web> |
Добавить комментарий