You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XML带别名LDAP认证管理器配置转Java Config技术问询

XML配置转Spring Java Config实现

以下是你提供的LDAP认证相关XML配置对应的Java Config实现,保证LoginMBean能正常注入指定的AuthenticationManager:

1. 定义Security配置类

创建标注@Configuration的配置类,替代原XML中的Bean和认证管理器配置:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import ma.gov.adii.beans.AuthenticationAD;
import org.springframework.security.core.userdetails.UserDetailsContextMapper;

@Configuration
public class SecurityConfig {

    // 注入已有的manageLoginService Bean(需确保该类已被Spring管理,比如加了@Service注解)
    @Autowired
    private UserDetailsContextMapper manageLoginService;

    // 对应XML中的ldapActiveDirectoryAuthProvider Bean
    @Bean
    public AuthenticationAD ldapActiveDirectoryAuthProvider() {
        AuthenticationAD authProvider = new AuthenticationAD("adii.gov.ma", "ldap://addouane.adii.gov.ma:389/");
        authProvider.setConvertSubErrorCodesToExceptions(true);
        authProvider.setUserDetailsContextMapper(manageLoginService);
        return authProvider;
    }

    // 定义名称为authenticationManagerLdap的AuthenticationManager Bean,对应原XML的alias配置
    @Bean(name = "authenticationManagerLdap")
    public AuthenticationManager authenticationManagerLdap(AuthenticationManagerBuilder authBuilder) throws Exception {
        authBuilder.authenticationProvider(ldapActiveDirectoryAuthProvider());
        return authBuilder.build();
    }
}

2. 保持LoginMBean代码不变

你的LoginMBean无需修改,@Autowired会根据Bean名称authenticationManagerLdap自动注入对应实例:

import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.beans.factory.annotation.Autowired;
import java.io.Serializable;

public class LoginMBean implements Serializable {  
    @Autowired 
    private AuthenticationManager authenticationManagerLdap;
    
    // 你的业务逻辑代码...
}

注意事项

  • 确保manageLoginService已被Spring容器管理(比如类上标注@Service或@Component注解),若未被管理,需在配置类中额外定义该Bean。
  • 若使用Spring Security 5.7+版本,WebSecurityConfigurerAdapter已被弃用,上述通过AuthenticationManagerBuilder构建AuthenticationManager的方式是官方推荐的替代方案。

内容的提问来源于stack exchange,提问作者Bouchaib Souhail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:01:27