Authenticate javax.naming.NamingException:LDAP

问题描述 投票:-1回答:1

[我正在尝试使用SpringBoot向LDAP进行身份验证,但是我收到NamingException的错误,这是我的新手,但是我看到了这篇文章Authenticating using LDAP with spring LDAP API and without using spring security

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(逻辑)和密码(逻辑)来创建我的连接…………??我的用户在哪儿?我输入了密码,但在Google put用户中却从未看到过,真的吗?

最后是我的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()称为前端,我需要知道此用户名/密码是否存在于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

谢谢。

[我正在尝试使用SpringBoot与LDAP进行身份验证,但是我收到NamingException的错误消息,这是我的新手,但是我看到了这篇文章,其中是通过Spring LDAP API使用LDAP进行身份验证,而没有使用...

java spring-boot ldap
1个回答
2
投票

执行搜索操作之前,需要身份验证(绑定)。您需要将contextSource.setUserDn("userDn");添加到,或尝试:

© www.soinside.com 2019 - 2024. All rights reserved.