Я разрабатываю веб-приложение, используя Spring MVC, Maven и Wildfly. Я не использую web.xml для настройки источников данных. Мой конфиг применяется через классы Java.
Мне нужно получить доступ к информации о сервере LDAP (url, base dn, username, password), которая находится в standalone.xml, расположенном в папке конфигурации Wildfly сервера, из класса конфигурации Java Spring Security. По вопросам безопасности мне не разрешено кодировать информацию LDAP в файле application.properties. Я не знаю, как это сделать без использования web.xml. Есть предложения?
Вот что у меня есть ...
- standalone.xml (Конфигурация LDAP)
<security-domain name="MYDOMAIN">
<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://myurl:000/"/>
<module-option name="java.naming.security.authentication" value="simple"/>
<module-option name="bindDN" value="mybinddn"/>
<module-option name="bindCredential" value="00000000000"/>
<module-option name="baseCtxDN" value="DC=bla,DC=bla,DC=bla"/>
<module-option name="baseFilter" value="(sAMAccountName={0})"/>
<module-option name="rolesCtxDN" value="OU=Ludopatia,DC=iplyc,DC=gov,DC=ar"/>
<module-option name="roleFilter" value="(member={1})"/>
<module-option name="roleAttributeID" value="cn"/>
<module-option name="searchScope" value="ONELEVEL_SCOPE"/>
<module-option name="allowEmptyPasswords" value="false"/>
</login-module>
</authentication>
</security-domain>
- SecurityConfiguration.java
открытый класс SecurityConfiguration расширяет WebSecurityConfigurerAdapter {
@Value("${ldap.urls}")
private String ldapUrls;
@Value("${ldap.base.dn}")
private String ldapBaseDn;
@Value("${ldap.username}")
private String ldapUsername;
@Value("${ldap.password}")
private String ldapPassword;
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception{
auth.ldapAuthentication()
.userSearchFilter("sAMAccountName={0}")
.groupSearchBase("ou=Ludopatia")
.groupSearchFilter("member={0}")
.contextSource()
.url(ldapUrls+ldapBaseDn)
.managerDn(ldapUsername)
.managerPassword(ldapPassword);
}
}
- pom.xml (часть, в которой установлен плагин wildfly-maven-plugin)
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<version>1.0.1.Final</version>
<configuration>
<jboss-home>${wildfly.home}</jboss-home>
<modules-path>${wildfly.home}/modules</modules-path>
<server-config>standalone.xml</server-config>
<filename>${project.build.finalName}.war</filename>
</configuration>
</plugin>
- application.properties
ldap.urls=ldap://myurl:000/
ldap.base.dn=dc=bla,dc=bla,dc=bla
ldap.username=mybinddn
ldap.password=000000000000
Настроен так, работает отлично. Но мне нужно удалить информацию LDAP из application.properties и напрямую взять ее из standalone.xml, не используя web.xml.
Заранее спасибо за помощь.