java 代码
java 代码
- /**
- * $Revision: 1.0 $
- * Created: 2007-6-8
- * $Date: 2007-6-8 $
- *
- * Author: Keven Chen
- */
- package ldap;
- import java.util.Enumeration;
- import java.util.Properties;
- import javax.naming.Context;
- import javax.naming.NamingEnumeration;
- import javax.naming.NamingException;
- import javax.naming.ReferralException;
- import javax.naming.directory.Attribute;
- import javax.naming.directory.Attributes;
- import javax.naming.directory.BasicAttribute;
- import javax.naming.directory.DirContext;
- import javax.naming.directory.InitialDirContext;
- import javax.naming.directory.ModificationItem;
- import javax.naming.directory.SearchControls;
- import javax.naming.directory.SearchResult;
- /**
- * @author Keven Chen
- * @version $Revision 1.0 $
- *
- */
- public class JndiLdap {
- private static final String SUN_JNDI_PROVIDER = "com.sun.jndi.ldap.LdapCtxFactory";
- private static final String IBM_JNDI_PROVIDER = "com.ibm.jndi.LDAPCtxFactory";
- public static void main(String[] args) throws Exception {
- DirContext ctx = null;
- try{
- ctx = ldapConnection();
- list(ctx);
- System.out.println("/");
- getEntry("CN=keven,CN=users,DC=comwave,DC=com", ctx);
- enableUser(ctx,"CN=bribin,OU=bpm,DC=comwave,DC=com");
- } finally{
- if(ctx !=null){
- ctx.close();
- }
- }
- }
- private static void getEntry(String dn,DirContext ctx){
- //Name
- try {
- Attributes attrs = ctx.getAttributes(dn);
- for (NamingEnumeration ae = attrs.getAll(); ae.hasMoreElements();) {
- Attribute attr = (Attribute)ae.next();
- String attrId = attr.getID();
- for (NamingEnumeration vals = attr.getAll(); vals.hasMore();) {
- String thing = vals.next().toString();
- System.out.println(attrId + ": " + thing);
- }
- }
- } catch (NamingException e) {
- e.printStackTrace();
- }
- }
- private static void disableUser(DirContext ctx,String user) throws NamingException{
- int UF_ACCOUNTDISABLE = 0x0002;
- int UF_NORMAL_ACCOUNT = 0x0200;
- ModificationItem[] mods = new ModificationItem[1];
- mods[0]= new ModificationItem(DirContext.REPLACE_ATTRIBUTE,new BasicAttribute("userAccountControl",Integer.toString(UF_NORMAL_ACCOUNT + UF_ACCOUNTDISABLE)));
- ctx.modifyAttributes(user, mods);
- }
- private static void enableUser(DirContext ctx,String user) throws NamingException{
- int UF_ACCOUNTDISABLE = 0x0002;
- int UF_NORMAL_ACCOUNT = 0x0200;
- ModificationItem[] mods = new ModificationItem[1];
- mods[0]= new ModificationItem(DirContext.REPLACE_ATTRIBUTE,new BasicAttribute("userAccountControl",Integer.toString(UF_NORMAL_ACCOUNT)));
- ctx.modifyAttributes(user, mods);
- }
- private static void list(DirContext ctx){
- boolean moreReferrals = true;
- while(moreReferrals) {
- try{
- for(NamingEnumeration results = search(ctx); results.hasMore();)
- {
- SearchResult si = (SearchResult)results.next();
- System.out.println(si.getName());
- Attributes attrs = si.getAttributes();
- if (attrs == null) {
- System.out.println("No attributes");
- continue;
- }
- NamingEnumeration ae = attrs.getAll();
- while (ae.hasMoreElements()) {
- Attribute attr =(Attribute)ae.next();
- String id = attr.getID();
- Enumeration vals = attr.getAll();
- while (vals.hasMoreElements())
- System.out.println(" "+id + ": " + vals.nextElement());
- }
- }
- moreReferrals = false;
- }catch (ReferralException e){
- /*myurl = getReferralUrl(e);
- if(myurl.getDN().length() == 0)
- {
- myurl.setDN(baseDN);
- name = url.getDN();
- } else
- {
- name = getName(myurl.getDN());
- }
- name = name + " [" + myurl.getHost() + ":" + myurl.getPort() + "]";
- t = new TreeNode2(name, myurl);
- checkLeaf(t, null);
- node.add(t);*/
- moreReferrals = e.skipReferral();
- try
- {
- ctx = (DirContext)e.getReferralContext();
- }
- catch(NamingException _ex) { }
- }catch (NamingException e){
- e.printStackTrace();
- moreReferrals = false;
- }
- }
- }
- private static NamingEnumeration search(DirContext ctx) throws NamingException {
- SearchControls search = new SearchControls();
- search.setSearchScope(SearchControls.SUBTREE_SCOPE);
- String attrList[] = {"cn","distinguishedName"};//memberOf,member,distinguishedName,lockoutTime>1
- search.setReturningAttributes(attrList);
- search.setCountLimit(0);
- search.setTimeLimit(0);
- String filter = "(sAMAccountName=brib*)";//(objectClass=*)
- NamingEnumeration results = ctx.search("dc=comwave,dc=com",filter,search);
- return results;
- }
- private static void ldapSearch(DirContext ctx) throws NamingException {
- SearchControls search = new SearchControls();
- search.setSearchScope(SearchControls.ONELEVEL_SCOPE);
- String attrList[] = {"cn"};//memberOf,member,distinguishedName,lockoutTime>1
- search.setReturningAttributes(attrList);
- search.setCountLimit(0);
- search.setTimeLimit(0);
- NamingEnumeration results = ctx.search("dc=comwave,dc=com","(objectClass=*)",search);
- while (results.hasMore()) {
- SearchResult si =(SearchResult)results.next();
- System.out.println(si.getName());
- /*Attributes attrs = si.getAttributes();
- if (attrs == null) {
- System.out.println("No attributes");
- continue;
- }
- NamingEnumeration ae = attrs.getAll();
- while (ae.hasMoreElements()) {
- Attribute attr =(Attribute)ae.next();
- String id = attr.getID();
- Enumeration vals = attr.getAll();
- while (vals.hasMoreElements())
- System.out.println(" "+id + ": " + vals.nextElement());
- } */
- }
- }
- private static DirContext ldapConnection() throws Exception {
- Properties env = new Properties();
- env.put(Context.INITIAL_CONTEXT_FACTORY, SUN_JNDI_PROVIDER);//java.naming.factory.initial
- env.put(Context.PROVIDER_URL, "ldap://192.168.1.32:389");//java.naming.provider.url
- env.put(Context.SECURITY_AUTHENTICATION, "simple");//java.naming.security.authentication
- env.put(Context.SECURITY_PRINCIPAL, "administrator@comwave.com");//java.naming.security.principal
- env.put(Context.SECURITY_CREDENTIALS, "yourpassword");//java.naming.security.credentials
- env.put(Context.REFERRAL, "throw");
- DirContext ctx = null;
- try {
- ctx = new InitialDirContext(env);
- } catch (NamingException e) {
- throw new Exception(e);
- }
- return ctx;
- }
- }