Here is my self-written Java test class calling client-configured user information:
PackagecomImportJava.io.UnsupportedEncodingException;ImportJava.util.Arrays;Importjava.util.Hashtable;ImportJavax.naming.Context;ImportJavax.naming.NamingEnumeration;ImportJavax.naming.NamingException;ImportJavax.naming.directory.Attribute;ImportJavax.naming.directory.Attributes;ImportJavax.naming.directory.BasicAttribute;ImportJavax.naming.directory.BasicAttributes;ImportJavax.naming.directory.DirContext;ImportJavax.naming.directory.SearchControls;ImportJavax.naming.directory.SearchResult;ImportJavax.naming.ldap.Control;ImportJavax.naming.ldap.InitialLdapContext;ImportJavax.naming.ldap.LdapContext; Public class userauthenticate { PrivateString URL ="ldap://localhost:10389";PrivateString BASEDN ="Cn=zhangsan,ou=users,ou=system";PrivateString FACTORY ="Com.sun.jndi.ldap.LdapCtxFactory";PrivateLdapcontext CTX =NULL;PrivateHashtable env =NULL;Privatecontrol[] Connctls =NULL;@SuppressWarnings({"Unchecked","Rawtypes","Unused"}) Public void Ldap_connect() {env =NewHashtable (); Env.put (Context.initial_context_factory, FACTORY); Env.put (Context.provider_url, URL); Env.put (Context.security_authentication,"Simple"); Env.put (Context.security_principal,"Cn=lisi;ou=users;ou=system"); Env.put (Context.security_credentials,"123456");//Env.put ("", "secret"); Try{CTX =NewInitialldapcontext (env, CONNCTLS); }Catch(Namingexception e) {E.printstacktrace (); } } Public void Getuserdn() {String DN ="Zhangsan"; Searchcontrols controls =NewSearchcontrols ();//Limit the field content to queryControls.setsearchscope (Searchcontrols.subtree_scope);//Set filter conditionsString filter =(& (Objectclass=top) (Objectclass=person) (cn=)+ DN +"))";//Set the returned attributeControls.setreturningattributes (NewString[] {"UID","UserPassword","DisplayName","cn","SN","Mail","description"});Try{//Control search criteria, or NULL to use the default search control, the property to search for if NULL returns all objects in the target contextNamingenumeration answer = ctx. Search ("Ou=system", filter, controls); while(Answer.hasmore ()) {SearchResult result = (SearchResult) answer.next (); Namingenumeration en = Result.getattributes (). GetAll ();if(En = =NULL) {System.out.println ("No namingenumeration"); }if(!en.hasmoreelements ()) {System.out.println ("no element"); }//Output query to the result while(En.hasmore ()) {Attribute attr = (Attribute) en.next (); System.out.println (Attr.getid () +"="+ Attr.get ()); } } }Catch(Namingexception e) {E.printstacktrace (); } } Public void Testadd()throwsException {Attributes Attrs =NewBasicattributes (true); Attribute objclass =NewBasicAttribute ("objectclass"); String[] Attrobjectclassperson = {"InetOrgPerson","Organizationalperson","Person","Top"}; Arrays.sort (Attrobjectclassperson); for(String Ocp:attrobjectclassperson) {Objclass.add (OCP); } attrs.put (Objclass); String uid ="Zhangsan"; String UserDN ="Uid="+ UID +","+"Ou=system"; Attrs.put ("cn", UID); Attrs.put ("SN", UID); Attrs.put ("DisplayName","Zhang San"); Attrs.put ("description","NOT NULL"); Attrs.put ("Mail","[email protected]"); Attrs.put ("UserPassword","11111". GetBytes ("UTF-8")); Ctx.createsubcontext (UserDN, attrs); } Public void Testdelete() {String uid ="Zhangsan"; String UserDN ="Uid="+ UID +","+"Ou=system";Try{Ctx.destroysubcontext (USERDN); }Catch(Namingexception e) {E.printstacktrace (); } } Public Boolean Testedit(){Booleanresult =true; String uid ="Zhangsan"; String UserDN ="Uid="+ UID +","+"Ou=system"; Attributes attr =NewBasicattributes (true); Attr.put ("Mail","[email protected]");Try{ctx.modifyattributes (UserDN, Dircontext.replace_attribute, attr); }Catch(Namingexception e) {E.printstacktrace (); }returnResult } Public Static void Main(string[] args) {Userauthenticate test =NewUserauthenticate ();//Test.getuserdn ("Zhangsan;ou=users;ou=system"); Try{test. Ldap_connect ();//test.testadd ();Test.getuserdn ();//test.testedit (); //test.testdelete ();}Catch(Exception e) {//TODO auto-generated catch blockE.printstacktrace (); } }}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Java test class calls the LDAP server client information to implement the Add and revise check