2014-05-15 155 views
3

我是新來的LDAP和我嘗試了我認爲是一個簡單的例子來測試與LDAP例如,有人就已經春天LDAP模塊設置測試。關於我使用的可以在這裏找到LDAP實例javax.naming.AuthenticationException:LDAP:錯誤代碼49 - 無效憑證]

詳情: http://blog.stuartlewis.com/2008/07/07/test-ldap-service/comment-page-3/

我使用LDAP瀏覽器/管理工具(Softerra的LDAP管理),並沒有任何問題,我可以訪問該目錄。

當我嘗試它使用Java和彈簧LDAP(2.0.1),我得到上面提到的身份驗證例外。在設置了我自己的LDAP實例,試圖解決此進一步我想在這裏檢查的情況下,更有經驗的人可以指出一些明顯的,我錯過了。

下面是我使用的代碼:

import org.springframework.ldap.core.LdapTemplate; 
import org.springframework.ldap.core.support.LdapContextSource; 

import java.util.List; 

public class LdapTest { 


public List<String> getListing() { 

    LdapTemplate template = getTemplate(); 

    List<String> children = template.list("dc=testathon,dc=net"); 

    return children; 
} 


private LdapTemplate getTemplate(){ 

    LdapContextSource contextSource = new LdapContextSource(); 
    contextSource.setUrl("ldap://ldap.testathon.net:389"); 
    contextSource.setUserDn("cn=john"); 
    contextSource.setPassword("john"); 

    try { 
     contextSource.afterPropertiesSet(); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 


    LdapTemplate template = new LdapTemplate(); 

    template.setContextSource(contextSource); 

    return template; 

} 


public static void main(String[] args){ 


    LdapTest sClient = new LdapTest(); 
    List<String> children = sClient.getListing(); 

    for (String child :children) { 
     System.out.println(child); 
    } 

} 

} 

堆棧跟蹤:

Exception in thread "main" org.springframework.ldap.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]; nested exception is javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials] 
at org.springframework.ldap.support.LdapUtils.convertLdapException(LdapUtils.java:191) 
at org.springframework.ldap.core.support.AbstractContextSource.createContext(AbstractContextSource.java:356) 
at org.springframework.ldap.core.support.AbstractContextSource.doGetContext(AbstractContextSource.java:140) 
+0

使用Spring對你來說是必須的嗎? – vkg

回答

6

原來我只是需要以包括專有名稱(包括組織單元)的一切。使用

contextSource.setBase(...); 

由於某種原因沒有工作。進行糾正後,一切都很好。

contextSource.setUserDn("cn=john,ou=Users,dc=testathon,dc=net");