Java中的Active Directory实现

时间:2012-12-24 13:18:19

标签: java active-directory

我想在java中执行Active Directory身份验证,其中通过登录屏幕输入用户名和密码。 我们有一个根目录,里面有很多子目录。如何执行身份验证,以便在整个层次结构中搜索用户并执行LDAP绑定。 如何在root中的所有子目录中查看用户自动化?

请在下面找到代码段:

  Hashtable<String, String> ldapEnv = new Hashtable<String, String>(11);
                  ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
                  //ldapEnv.put(Context.PROVIDER_URL,  "ldap://127.0.0.1:10389");
                  ldapEnv.put(Context.PROVIDER_URL,  prop.getProperty("ldapServer"));
                  ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
                  ldapEnv.put(Context.SECURITY_PRINCIPAL, "cn="+userName+",ou=Users,ou=ACN,ou=Peterborough,dc=xyz,dc=com");
                  //ldapEnv.put(Context.SECURITY_PRINCIPAL, "uid=admin,ou=system");                
                  ldapEnv.put(Context.SECURITY_CREDENTIALS,password);
                  ldapContext = new InitialDirContext(ldapEnv);

我遇到的问题是,由于Context.SECURITY_PRINCIPAL是硬编码的,所以搜索只发生在这个不符合我要求的硬编码目录中。

1 个答案:

答案 0 :(得分:2)

我见过的大多数实现,使用只读Active Directory搜索用户的上下文,然后尝试使用用户的完整上下文和提供的密码登录。像this之类的东西可以帮助您开始搜索部分。