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
相关产品推荐
相关产品推荐

