我们正尝试使用DefaultSpringSecurityContextSource类通过其他配置来实现LDAP。作为我们的安全准则之一,重试是必须实现的属性,但是在contextSource中,没有允许此操作的方法。 Spring Boot是否自动通过池内置某种重试功能?
@Autowired
private DefaultSpringSecurityContextSource context;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().fullyAuthenticated()
.and()
.formLogin();
}
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.ldapAuthentication()
.userSearchFilter("(sAMAccountName={0})")
.contextSource(context);
}
@Bean
public DefaultSpringSecurityContextSource createContext() {
DefaultSpringSecurityContextSource contextSource = new DefaultSpringSecurityContextSource("SERVER_LINK");
contextSource.setUserDn(ldapSecurityPrincipal);
contextSource.setPassword(ldapPrincipalPassword);
contextSource.setReferral("follow");
Map<String, Object> environment = new HashMap<>();
environment.put("com.sun.jndi.ldap.connect.timeout", "10000");
environment.put("com.sun.jndi.ldap.read.timeout", "15000");
environment.put("com.sun.jndi.ldap.connect.pool.initsize","6");
environment.put("com.sun.jndi.ldap.connect.pool.maxsize","6");
contextSource.setBaseEnvironmentProperties(environment);
return contextSource;
}
预期行为 在使用Spring Security时,我们希望启用某种重试机制或功能。
实际行为 启动Spring Boot,LDAP连接并通过我的凭据登录后,我们的InfoSec表示不会重试,从而耗尽了我们的资源。