首先,我是LDAP新手,使用LDAP進行編碼。我有一個簡單的問題,我試圖在LDAP中進行調試。我花了最後24小時看着我的代碼並搜索示例和配置。我有一個在JBoss上運行的Web應用程序。我創建了一個外部的Context bean,這樣我就可以在我的LDAP服務器的JNDI樹中查找連接。我正在建立一個沒有問題的連接。當我在LDAP服務器中搜索UID時,出現NameNotFoundException。來自LDAP的異常消息說:LDAP:錯誤代碼32 - 沒有這樣的對象。這讓我看看我的搜索條件。LDAP未從搜索中找到對象
以下是我有:
我使用LDAP瀏覽器連接到LDAP服務器。我正在使用LDAP瀏覽器中的搜索工具來驗證我的搜索條件。
SearchControls ctls = new SearchControls();
ctls. setReturningObjFlag (true);
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String filter = "(&(objectClass=*))";
InitialContext initCtx = new InitialContext();
LdapContext ldapCtx = (LdapContext) initCtx.lookup("ldapDataSource");
NamingEnumeration answer3 = ldapCtx.search("ou=People, ou=externalusers,
ou=EpicentricJNDIContext,
o=company.com", filter, ctls);
我也已將對象類更改爲人,只是爲了確保。我仍然沒有得到結果。
我覺得我的代碼是正確的。我現在想知道用戶是否有正確的權限來完成搜索。另外,如何知道LDAP結構已正確設置,以便應用程序可以搜索LDAP?這是我的信仰,我們正在使用Netscape目錄服務器
我在這裏丟失什麼?看起來問題在我面前,我看不到它。任何建議或意見將不勝感激。
謝謝
我已經解決了我的問題。問題在於我如何綁定到LDAP服務器以及我如何創建DN。
SearchControls ctls = new SearchControls(); ctls. setReturningObjFlag (true);
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE); String filter = "(& (objectClass=inetOrgPerson))";
InitialContext initCtx = new InitialContext();
LdapContext ldapCtx = (LdapContext)
initCtx.lookup("ldapDataSource");
NamingEnumeration answer3 = ldapCtx.search("ou=People, ou=externalusers,ou=EpicentricJNDIContext",filter,ctls);
不要在java中這樣做,但你確定「o = company.com」是不是「o = company,o = com」? – JPBlanc 2011-05-14 16:55:49
或o = company,dc = com? – EJP 2011-05-15 22:55:13