21
21
import org .springframework .beans .factory .annotation .Autowired ;
22
22
import org .springframework .beans .factory .annotation .Value ;
23
23
import org .springframework .boot .autoconfigure .condition .ConditionalOnProperty ;
24
+ import org .springframework .context .annotation .Bean ;
24
25
import org .springframework .context .annotation .Configuration ;
25
26
import org .springframework .context .annotation .Profile ;
26
27
import org .springframework .ldap .core .support .BaseLdapPathContextSource ;
29
30
import org .springframework .security .config .annotation .web .builders .HttpSecurity ;
30
31
import org .springframework .security .config .annotation .web .configuration .EnableWebSecurity ;
31
32
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 ;
32
39
33
40
/**
34
41
* This class is used to enable the ldap authentication based on property
@@ -74,20 +81,34 @@ public Integer getTimeOut() {
74
81
@ Autowired
75
82
private CustomAuthenticationEntryPoint customAuthenticationEntryPoint ;
76
83
77
- @ Autowired
78
- protected void configureGlobal (AuthenticationManagerBuilder auth ) throws Exception {
84
+ @ Override
85
+ public void configure (AuthenticationManagerBuilder auth ) throws Exception {
79
86
final String jasyptKey = RabbitMqPropertiesConfig .readJasyptKeyFile (jasyptKeyFilePath );
80
87
if (managerPassword .startsWith ("{ENC(" ) && managerPassword .endsWith ("}" )) {
81
88
managerPassword = DecryptionUtils .decryptString (
82
89
managerPassword .substring (1 , managerPassword .length () - 1 ), jasyptKey );
83
90
}
84
- LOGGER .debug ("LDAP server url: " + ldapUrl );
85
- auth .ldapAuthentication ()
86
- .userSearchFilter (userSearchFilter )
87
- .contextSource (ldapContextSource ());
91
+ LOGGER .debug ("LDAP server url: {}" , ldapUrl );
92
+
93
+ // Initialize and configure the LdapContextSource
94
+ LdapContextSource contextSource = ldapContextSource ();
95
+
96
+ // Configure BindAuthenticator with the context source and user search filter
97
+ BindAuthenticator bindAuthenticator = new BindAuthenticator (contextSource );
98
+ bindAuthenticator .setUserSearch (new FilterBasedLdapUserSearch (
99
+ "" , // Empty base indicates search starts at root DN provided in contextSource
100
+ userSearchFilter ,
101
+ contextSource ));
102
+
103
+ // Setup LdapAuthenticationProvider
104
+ LdapAuthenticationProvider ldapAuthProvider = new LdapAuthenticationProvider (bindAuthenticator );
105
+
106
+ // Configure the authentication provider
107
+ auth .authenticationProvider (ldapAuthProvider );
88
108
}
89
109
90
- public BaseLdapPathContextSource ldapContextSource () {
110
+ @ Bean
111
+ public LdapContextSource ldapContextSource () {
91
112
LdapContextSource ldap = new LdapContextSource ();
92
113
ldap .setUrl (ldapUrl );
93
114
ldap .setBase (rootDn );
@@ -100,6 +121,7 @@ public BaseLdapPathContextSource ldapContextSource() {
100
121
return ldap ;
101
122
}
102
123
124
+
103
125
@ Override
104
126
protected void configure (HttpSecurity http ) throws Exception {
105
127
LOGGER .debug ("LDAP authentication enabled" );
0 commit comments