2016-08-17 7 views
0

Я использую следующий код для аутентификации с использованием Spring LDAP.Spring LDAP throwing NPE

public static void main(String[] args) { 
    String username = "kgam"; 
    String password = "password"; 

    LdapContextSource ctxSrc = new LdapContextSource(); 
    ctxSrc.setUrl(URL); 
    ctxSrc.setBase(BASE); 
    ctxSrc.setUserDn(USERDN); 
    ctxSrc.setPassword(PASSWORD); 
    LdapTemplate ldapTemplate = new LdapTemplate(ctxSrc); 
    AndFilter filter = new AndFilter(); 
    ldapTemplate.setIgnorePartialResultException(true); 
    filter.and(new EqualsFilter("objectClass", "person")).and(new EqualsFilter("sAMAccountName", username)); 
    System.out.println(ldapTemplate.authenticate(BASE, filter.toString(), password)); 
} 

Он выбрасывает NPE со следующей трассировкой стека.

Exception in thread "main" java.lang.NullPointerException 
    at org.springframework.ldap.core.support.AbstractContextSource.getReadOnlyContext(AbstractContextSource.java:138) 
    at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:286) 
    at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:236) 
    at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:623) 
    at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:534) 
    at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:461) 
    at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:482) 
    at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:502) 
    at org.springframework.ldap.core.LdapTemplate.authenticate(LdapTemplate.java:1481) 
    at org.springframework.ldap.core.LdapTemplate.authenticate(LdapTemplate.java:1398) 
    at com.capitalone.dashboard.service.AuthenticationServiceImpl.main(AuthenticationServiceImpl.java:123) 

Любые идеи относительно того, где я здесь не так?

ответ

0

Если вы настроили Spring LDAP полностью без помощи Spring, как в вашем примере, вам нужно позвонить afterPropertiesSet по адресу ContextSource, когда вы закончите его настройку.