| Author |
LDAP and NamingEnumeration
|
tejal bilan
Greenhorn
Joined: Dec 05, 2003
Posts: 5
|
|
Hi All I have connected to LDAP and have abit of trouble getting certain data out. for example: In the LDAP browsing tool..a groupA has certain attributes and their values for example: cn groupA sAMAccountName aaa member CN=Cilliers\, Maggie, OU=Users ... member CN=James\, Kai, OU=Users ... member CN=Henin\, Sven, OU=Users ... How do I get all the members in groupA? Please give me example code to do this. A bit of my code: //*************************************************** DirContext ctx = new InitialDirContext(env); // Ask for all attributes of the object Attributes attrs = ctx.getAttributes("CN=groupA,OU=GroupsA,OU=Groups,OU=Core,DC=xx,DC=com"); //getting the attributes value System.out.println("member: " + attrs.get("member").get()); //****************************************************** I have tried to use NaminEnumeration..but was not very successful. NamingEnumeration xx = attrs.get("member").getAll(); while(xx.hasMore()){ System.out.println(xx.??); //It has no method to get a value } Need urgent help thanx in advance Scarlet
|
 |
Philip Shanks
Ranch Hand
Joined: Oct 15, 2002
Posts: 189
|
|
It actually looks as though you are querying MS ActiveDirectory, so I don't know if this will help, but you may be able to adapt some of it. Where I am using the attributes "cn" and "mail" you would substitute "member". And of course, you would replace some/all of the code where I am building the StringBuffer "sb". Not sure what your base should be... perhaps "OU=Core,DC=xx,DC=com". Hope this helps!
|
Philip Shanks, SCJP - Castro Valley, CA
My boss never outsources or has lay-offs, and He's always hiring. I work for Jesus! Prepare your resume!
|
 |
tejal bilan
Greenhorn
Joined: Dec 05, 2003
Posts: 5
|
|
Hi Philip Thank you for your response. I have tried your suggested code, but got myself abit stuck with this line: String base = "DC=sasol,DC=com"; String filter = "CN=SAPPortal-Sec-Prod-Admin,OU=SAPPortal Groups,OU=Groups,OU=Core,DC=sasol,DC=com"; NamingEnumeration results = dctx.search(base, filter, ctls); I can not continue with the while loop because results is null. The search method takes a (name, string, searchControl) I know that the base value is right, and my string value points to the group that has the attributes "member" which I want. Please can you help further. I have played around with it for some time and was very unsuccessful. The error I get : javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining name 'DC=sasol,DC=com' at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source) at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source) at com.sun.jndi.ldap.LdapCtx.searchAux(Unknown Source) at com.sun.jndi.ldap.LdapCtx.c_search(Unknown Source) at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(Unknown Source) at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown source) at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source) at javax.naming.directory.InitialDirContext.search(Unknown Source) at com.sasol.iview.LDAPLookup.main(LDAPLookup.java:34) source code: public static void main(String[] args) { Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, "ldap://ldapSasol.sasol.com:389"); env.put(Context.SECURITY_PRINCIPAL,("uid")); env.put(Context.SECURITY_CREDENTIALS, "password"); String base = "DC=sasol,DC=com"; String filter = "CN=SAPPortal-Sec-Prod-Admin,OU=SAPPortal Groups,OU=Groups,OU=Core,DC=sasol,DC=com"; try { DirContext dctx = new InitialDirContext(env); //String[] attrIDs = {"member"}; String[] attrIDs = {"member"}; SearchControls ctls = new SearchControls(); ctls.setReturningAttributes(attrIDs); ctls.setSearchScope(SearchControls.SUBTREE_SCOPE); NamingEnumeration results = dctx.search(base, filter, ctls); //Attributes attrs1 = dctx.getAttributes("CN=SAPPortal-Sec-Prod-Admin,OU=SAPPortal Groups,OU=Groups,OU=Core,DC=sasol,DC=com"); //System.out.println("val:" + attrs1.get("cn").get()); dctx.close(); StringBuffer sb = new StringBuffer(); while (results.hasMore()) { SearchResult res = (SearchResult) results.next(); Attributes attrs = res.getAttributes(); if (results.hasMore()) sb.append(attrs.get("member").toString().substring(4) + ","); else sb.append(attrs.get("member").toString().substring(4)); } System.out.println(sb.toString()); } catch (NamingException e) { e.printStackTrace(); } } //end main
|
 |
 |
|
|
subject: LDAP and NamingEnumeration
|
|
|