Skip to content

Commit 89681c5

Browse files
author
Piyush Sadangi (EXT)
committed
EIFA:369: Reduce 6 LDAP calls to 4
1 parent a36b905 commit 89681c5

File tree

2 files changed

+37
-7
lines changed

2 files changed

+37
-7
lines changed

publish-common/pom.xml

+5
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@
6262
<artifactId>spring-security-ldap</artifactId>
6363
<scope>compile</scope>
6464
</dependency>
65+
<dependency>
66+
<groupId>org.springframework.ldap</groupId>
67+
<artifactId>spring-ldap-core</artifactId>
68+
<version>2.3.8.RELEASE</version>
69+
</dependency>
6570
<dependency>
6671
<groupId>io.springfox</groupId>
6772
<artifactId>springfox-swagger2</artifactId>

publish-service/src/main/java/com/ericsson/eiffel/remrem/publish/config/SecurityConfig.java

+32-7
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.springframework.beans.factory.annotation.Autowired;
2222
import org.springframework.beans.factory.annotation.Value;
2323
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
24+
import org.springframework.context.annotation.Bean;
2425
import org.springframework.context.annotation.Configuration;
2526
import org.springframework.context.annotation.Profile;
2627
import org.springframework.ldap.core.support.BaseLdapPathContextSource;
@@ -29,6 +30,17 @@
2930
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
3031
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
3132
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
33+
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
34+
import org.springframework.security.crypto.password.PasswordEncoder;
35+
import org.springframework.security.ldap.authentication.BindAuthenticator;
36+
import org.springframework.security.ldap.authentication.LdapAuthenticationProvider;
37+
import org.springframework.security.ldap.authentication.LdapAuthenticator;
38+
import org.springframework.security.ldap.search.FilterBasedLdapUserSearch;
39+
import org.springframework.ldap.pool.validation.DefaultDirContextValidator;
40+
import org.springframework.ldap.pool.factory.PoolingContextSource;
41+
import org.springframework.ldap.core.ContextSource;
42+
import org.springframework.ldap.core.support.BaseLdapPathContextSource;
43+
3244

3345
/**
3446
* This class is used to enable the ldap authentication based on property
@@ -74,20 +86,33 @@ public Integer getTimeOut() {
7486
@Autowired
7587
private CustomAuthenticationEntryPoint customAuthenticationEntryPoint;
7688

77-
@Autowired
78-
protected void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
89+
@Override
90+
public void configure(AuthenticationManagerBuilder auth) throws Exception {
7991
final String jasyptKey = RabbitMqPropertiesConfig.readJasyptKeyFile(jasyptKeyFilePath);
8092
if (managerPassword.startsWith("{ENC(") && managerPassword.endsWith("}")) {
8193
managerPassword = DecryptionUtils.decryptString(
8294
managerPassword.substring(1, managerPassword.length() - 1), jasyptKey);
8395
}
84-
LOGGER.debug("LDAP server url: " + ldapUrl);
85-
auth.ldapAuthentication()
86-
.userSearchFilter(userSearchFilter)
87-
.contextSource(ldapContextSource());
96+
LOGGER.debug("LDAP server url: {}", ldapUrl);
97+
98+
// Initialize and configure the LdapContextSource
99+
LdapContextSource contextSource = ldapContextSource();
100+
101+
// Configure BindAuthenticator with the context source and user search filter
102+
BindAuthenticator bindAuthenticator = new BindAuthenticator(contextSource);
103+
bindAuthenticator.setUserSearch(new FilterBasedLdapUserSearch(
104+
"", // Empty base indicates search starts at root DN provided in contextSource
105+
userSearchFilter,
106+
contextSource));
107+
108+
// Setup LdapAuthenticationProvider
109+
LdapAuthenticationProvider ldapAuthProvider = new LdapAuthenticationProvider(bindAuthenticator);
110+
111+
// Configure the authentication provider
112+
auth.authenticationProvider(ldapAuthProvider);
88113
}
89114

90-
public BaseLdapPathContextSource ldapContextSource() {
115+
public LdapContextSource ldapContextSource() {
91116
LdapContextSource ldap = new LdapContextSource();
92117
ldap.setUrl(ldapUrl);
93118
ldap.setBase(rootDn);

0 commit comments

Comments
 (0)