Spring Boot 3迁移后Active Directory集成报InvalidNameException问题求助
Spring Boot 3.0.8迁移AD集成时出现LDAP错误码34的问题
将基于Spring Boot 2.1的旧代码迁移至Spring Boot 3.0.8,其中包含Active Directory(AD)集成模块。原Spring Boot 2.1中的AD代码运行正常,但迁移完成后出现错误:org.springframework.ldap.InvalidNameException: [LDAP: error code 34 - invalid DN],且AD端未做任何改动。
旧代码(Spring Boot 2.1)
@Autowired public void configure(AuthenticationManagerBuilder auth) throws Exception { ActiveDirectoryLdapAuthenticationProvider adProvider = new ActiveDirectoryLdapAuthenticationProvider(domain, ldapUrls, ldapBaseDn); adProvider.setConvertSubErrorCodesToExceptions(true); adProvider.setUseAuthenticationRequestCredentials(true); if (ldapUserDnPattern != null && ldapUserDnPattern.trim().length() > 0) { adProvider.setSearchFilter("(&(objectClass=user)(sAMAccountName={1}))"); // adProvider.setSearchFilter(ldapUserDnPattern); } auth.authenticationProvider(adProvider); auth.eraseCredentials(false); }
新代码(Spring Boot 3.0.8)
@Bean public AuthenticationManager authManager(HttpSecurity http) throws Exception { ActiveDirectoryLdapAuthenticationProvider adProvider = new ActiveDirectoryLdapAuthenticationProvider(domain, ldapUrls,ldapBaseDn); adProvider.setConvertSubErrorCodesToExceptions(true); adProvider.setUseAuthenticationRequestCredentials(true); adProvider.setSearchFilter("(&(objectClass=user)(sAMAccountName={1}))"); AuthenticationManagerBuilder authenticationManagerBuilder = http.getSharedObject(AuthenticationManagerBuilder.class); authenticationManagerBuilder.authenticationProvider(adProvider); return authenticationManagerBuilder.build(); }
已通过Apache Directory Studio验证domain、ldapUrls和ldapBaseDn配置正确,但因公司政策无法提供具体值,尝试多种解决方案均无效。
内容的提问来源于stack exchange,提问作者Praguru 14
相关产品推荐
相关产品推荐

