Я пытаюсь аутентифицироваться с LDAP с использованием SpringBoot, но я получаю сообщение об ошибке для NamingException, я новичок в этом, но я видел этот пост Аутентификация с использованием LDAP с API Spring LDAP и без использования безопасности Spring
Pom. xml
<dependency>
<groupId>org.springframework.ldap</groupId>
<artifactId>spring-ldap-core</artifactId>
</dependency> -> 2.3.2
Затем я создал свою конфигурацию для доступа
@Configuration
public class LdapConfig {
/** The ldap url. */
@Value("${ldap.url}")
private String ldapUrl; // ldap://MYCOMPANY.com:389
/** The ldap access password. */
@Value("${ldap.password}")
private String ldapAccessPassword; // Password to access LDAP
/** The ldap U base user. */
@Value("${ldap.base}")
private String ldapUBaseUser; // OU=USERS,OU=ACCOUNTS,DC=rg,DC=MYCOMPANY,DC=com
/**
* Context source.
*
* @return the ldap context source
*/
@Bean
public LdapContextSource contextSource() {
LdapContextSource contextSource = new LdapContextSource();
contextSource.setUrl(ldapUrl);
contextSource.setPassword(ldapAccessPassword);
contextSource.setBase(ldapUBaseUser);
return contextSource;
}
/**
* Ldap template.
*
* @return the ldap template
*/
@Bean
public LdapTemplate ldapTemplate() {
return new LdapTemplate(contextSource());
}
}
Хорошо, здесь у меня большой вопрос ... Я создаю свое соединение с URL (logi c) с паролем (logi c) ...... ¿¿ГДЕ мой пользователь ?? Я поставил пароль, но я никогда не вижу в google put user, действительно ???
Наконец-то мой Impl:
@Autowired
private LdapTemplate ldapTemplate;
@Value("${ldap.base}")
private String base; // WHY DO I REPEAT THIS VALUE ??? In my @configuration I especified the base
public boolean existUser(String usr, String pwd) {
try {
AndFilter filter = new AndFilter();
filter.and(new EqualsFilter("mailNickname", usr));
Boolean authenticate = ldapTemplate.authenticate(base, filter.encode(), pwd);
boolean result = authenticate.booleanValue();
if(!result) {
LOGGER.info("The: " + usr + " , is failed.");
}
return result;
} catch (Exception e) {
LOGGER.error("Error existUser() --> " +e);
e.printStackTrace();
return false;
}
}
Наконец-то я вызываю свой метод existUser () с именем пользователя и паролем front- В конце мне нужно знать, существует ли этот пользователь / пароль в LDAP, но я получаю эту ошибку:
12-02-2020 09:03:27.821 [http-nio-80-exec-5] ERROR e.c.service.impl.LoginServiceImp.existUser -Error existUser() --> org.springframework.ldap.UncategorizedLdapException: Uncategorized exception occured during LDAP processing; nested exception is javax.naming.NamingException: [LDAP: e rror code 1 - 000004DC: LdapErr: DSID-0C0907C2, comment: In order to perform this operation a s uccessful bind must be completed on the connection., data 0, v2580]; remaining name 'OU=USERS,O U=ACCOUNTS,DC=rg,DC=MYCOMPANY,DC=com'
org.springframework.ldap.UncategorizedLdapException: Uncategorized exception occured during LDAP processing; nested exception is javax.naming.NamingException: [LDAP: error code 1 - 000004DC:LdapErr: DSID-0C0907C2, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v2580]; remaining name 'OU=USERS,OU=ACCOUNTS,DC=rg,DC=rep sol,DC=com'
at org.springframework.ldap.support.LdapUtils.convertLdapException(LdapUtils.java:228)
at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:397)
at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:309)
at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:642)
at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:578)
at org.springframework.ldap.core.LdapTemplate.authenticate(LdapTemplate.java:1441)
at org.springframework.ldap.core.LdapTemplate.authenticate(LdapTemplate.java:1426)
at org.springframework.ldap.core.LdapTemplate.authenticate(LdapTemplate.java:1369)
at es.MYPROJECT.service.impl.LoginServiceImp.existUser(LoginServiceImp.java:29)
at es.MYPROJECT.controller.LoginController.login(LoginController.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43 )
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHand lerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(Invoc ableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod. invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.i nvokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.h andleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(Abstr actHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java: 967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:9 01)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.jav a:970)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterCh ain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java :166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterCh ain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java :166)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Filter ChainProxy.java:317)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(Exceptio nTranslationFilter.java:114)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Filter ChainProxy.java:331)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionMan agementFilter.java:137)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Filter ChainProxy.java:331)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilt er(AnonymousAuthenticationFilter.java:111)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Filter ChainProxy.java:331)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter. doFilter(SecurityContextHolderAwareRequestFilter.java:170)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Filter ChainProxy.java:331)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(Reque stCacheAwareFilter.java:63)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Filter ChainProxy.java:331)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutF ilter.java:116)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Filter ChainProxy.java:331)
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.ja va:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Filter ChainProxy.java:331)
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWr iterFilter.java:64)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.ja va:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Filter ChainProxy.java:331)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(S ecurityContextPersistenceFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Filter ChainProxy.java:331)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFil ter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.ja va:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(Filter ChainProxy.java:331)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy. java:214)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177 )
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilter Proxy.java:347)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy. java:263)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterCh ain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java :166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextF ilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.ja va:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterCh ain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java :166)
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutForm ContentFilter.java:108)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.ja va:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterCh ain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java :166)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMet hodFilter.java:81)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.ja va:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterCh ain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java :166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEnc odingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.ja va:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterCh ain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java :166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:50 4)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:7 90)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: javax.naming.NamingException: [LDAP: error code 1 - 000004DC: LdapErr: DSID-0C0907C2 , comment: In order to perform this operation a successful bind must be completed on the connec tion., data 0, v2580]; remaining name 'OU=USERS,OU=ACCOUNTS,DC=rg,DC=MYCOMPANY,DC=com'
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3194)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:3100)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2891)
at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1846)
at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1769)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:392)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContex t.java:358)
at javax.naming.directory.InitialDirContext.search(InitialDirContext.java:276)
at org.springframework.ldap.core.LdapTemplate$3.executeSearch(LdapTemplate.java:303)
at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:363)
... 92 more
Спасибо.