那就要看你的ldap采用什么加密机制罗,如果是不能反向的,则只能用用输入的用户名和密码登陆看是否成功,这种方式.否则你只能采用重新设置密码来实现。很多加密算法都是不能被反向的。

解决方案 »

  1.   

    win2000的activity directory采用的什么加密机制呢?我看到一个说法说他的password只能write不能read,是不是这个道理呢?
      

  2.   

    诸位有连接LDAPServer的源码吗?可否给小弟一份。我现在用的Novell的LDAP包,太复杂了,我想自己重写一下。在此谢过了![email protected]
      

  3.   

    win2000的密码是不可读的,用以下代码进行用户验证import java.util.Hashtable;import javax.naming.AuthenticationException;
    import javax.naming.Context;
    import javax.naming.NamingException;
    import javax.naming.directory.DirContext;
    import javax.naming.directory.InitialDirContext;
    public class ActiveDirectoryConntct1
    {
        public static void main(String[] args)
        {
            String user="testuser";
            String password="password";
            String domain="test.com";        Hashtable env = new Hashtable();
            env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
            env.put(Context.PROVIDER_URL, "ldap://192.168.6.13:389");
            env.put(Context.SECURITY_AUTHENTICATION, "simple");
            env.put(Context.SECURITY_PRINCIPAL, user + "@" + domain);
            env.put(Context.SECURITY_CREDENTIALS, password);        DirContext ctx = null;
            try
            {
                ctx = new InitialDirContext(env);
                System.out.println("验证通过");
            }
            catch(AuthenticationException e)
            {
                System.out.println("账号或密码错误");
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }        if(ctx != null)
            {
                try
                {
                    ctx.close();
                }
                catch (NamingException e)
                {
                    e.printStackTrace();
                }
            }
            System.exit(0);
        }
    }