我想在 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 是硬编码的,所以搜索只发生在这个不符合我要求的硬编码目录中。