SpringBoot LDAP重试机制和池化

时间:2019-05-20 14:14:12

标签: java spring spring-boot spring-security

我们正尝试使用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表示不会重试,从而耗尽了我们的资源。

0 个答案:

没有答案