- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我使用 LDAPContext 类搜索特定用户并尝试获取它是否存在。但是 search()
方法返回一个空响应。
private int checkUserOnLDAP() {
String strLDAPServer = "ldap://ldap.forumsys.com:389";
String strLDAPPricipal = "cn=read-only-admin,dc=example,dc=com";
String strPassword = "password";
String strSearchBase = "ou=mathematicians,dc=example,dc=com";
String strUserToSearch = "riemann";
Hashtable<String, String> environment = new Hashtable<String, String>();
environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
environment.put(Context.PROVIDER_URL, strLDAPServer);
environment.put(Context.SECURITY_AUTHENTICATION, "simple");
environment.put(Context.SECURITY_PRINCIPAL, strLDAPPricipal);
environment.put(Context.SECURITY_CREDENTIALS, strPassword);
LdapContext ctxGC = null;
try {
ctxGC = new InitialLdapContext(environment, null);
ctxGC.getAttributes("");
} catch (NamingException e) {
System.err.print("SEARCHER BLOCKED USER");
e.printStackTrace();
} catch (Exception e) {
System.err.print("SEARCHER WRONG PASSWORD");
e.printStackTrace();
}
System.out.println("SEARCHER LOGIN SUCCESSFUL");
System.out.println("NOW TRYING TO SEARCH");
try {
String searchFilter = "(&(objectClass=user)(sAMAccountName=" + strUserToSearch + "))";
String returnedAtts[] = new String[0];
SearchControls searchCtls = new SearchControls();
searchCtls.setReturningAttributes(returnedAtts);
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration<?> answer = ctxGC.search(strSearchBase, searchFilter, searchCtls);
if (answer.hasMoreElements()) {
Object a = answer.nextElement();
System.out.println("SUCCESFULLY, FOUND USER");
return 0;
} else {
System.out.println("ANSWER HAS NO ELEMENTS");
}
} catch (Exception e) {
System.out.println("SEARCH FAILED");
e.printStackTrace();
}
return 0;
}
测试时,我使用在线 ldap 服务:http://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/
考虑到这个在线测试服务,我如何检查用户是否存在?
最佳答案
您的搜索过滤器使用 sAMAccountName
属性,但该属性在测试服务器中不可用。请改用 uid
。
关于java - LDAPContext.search() 返回空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42276151/
我使用 LDAPContext 类搜索特定用户并尝试获取它是否存在。但是 search() 方法返回一个空响应。 private int checkUserOnLDAP() { String
我在 java 中使用 LdapContext 来查询 LDAP 服务器(我认为该服务器是 Sun 服务器版本 5.2)。我对常规查询使用 LdapContext.search(String name
我已经在 Java 中建立了一个 LdapContext,并且希望对其执行搜索。我正在连接到根域为 dc=fake,dc=domain,dc=com 的 IP (ldap://1.1.1.20:3
请解释在 JNDI 中使用 ldapcontext 和 dircontext 之间的区别。 我发现有 JNDI 示例同时使用 ldapcontext 和 dircontext。我应该使用哪个? 最佳答
我有一个 Web 应用程序,用户必须在其中登录。密码存储在 LDAP 服务器中。有关 LDAP 服务器的所有信息都作为外部 jndi 资源存储在应用程序服务器 (glassfish) 中。所以我的应用
在 Websphere 中,当您使用 LdapContext 进行 LDAP 查询时,凭据的传输是否加密? LdapContext ctx = new InitialLdapContext (env,
我是一名优秀的程序员,十分优秀!