public static DirContext getLDAPConnection() throws NamingException {
String root = "relationName=relation,dc=hisome,dc=com";
String LDAPPassword = "secret";
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost/" + root);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, root);
env.put(Context.SECURITY_CREDENTIALS, LDAPPassword);
DirContext ctx = null;
ctx = new InitialDirContext(env);
return ctx;
}
public static NamingEnumeration<SearchResult> getLDAPResultList(
DirContext ctx) {
NamingEnumeration<SearchResult> enums = null;
try {
String filter = "(objectclass=*)";
SearchControls sh = new SearchControls();
enums = ctx.search("", filter, sh);
if (ctx != null) {
ctx.close();
}
return enums;
} catch (javax.naming.AuthenticationException e) {
e.printStackTrace();
return enums;
} catch (Exception e) {
e.printStackTrace();
return enums;
}
}
一直报NameNotFoundException异常
[LDAP: error code 32 - No Such Object]; remaining name ''
之前参照网上的实例是可以正常拿到SearchResult的,现在我换成自己定义的objectClass就不行了。请问是什么原因呢
问题补充:xihuan&java 写道
把
String filter = "(objectclass=*)";
()去掉试试
去掉了也不行
问题补充:xihuan&java 写道
enums = ctx.search([color=red]""[/color], filter, sh);
这里面还少一个参数
xihuan&java 写道
enums = ctx.search([color=red]""[/color], filter, sh);
这里面还少一个参数
这个参数设置成rootdn或者suffix都不行,我用LdapBrowser可以看到我想要的目录结构和内容
问题补充:xihuan&java 写道
dc=hisome,dc=com
写这个参数也不行吗
是的,不行。SearchControls 设置了级别也不行
问题补充:xihuan&java 写道
objectclass大小写对吗
各种大小写组合都试过,应该不是这个问题
相关推荐
使用`DirContext.search()`方法时,可以添加`PagedResultsControl`来实现分页。 `工具`标签可能暗示了有现成的库或者工具可以帮助处理这个问题,比如`UnboundID LDAP SDK`,它提供了方便的分页查询API。 压缩包中...
2. **搜索目录**:利用`DirContext.search()`方法执行LDAP查询。可以指定过滤器(如“cn=John Doe”)和搜索基DN(Distinguished Name,如“ou=People,dc=example,dc=com”)。 3. **读取条目**:找到的对象是`...
要查询 LDAP 服务器,可以使用 `DirContext` 对象的 `search()` 方法: ```java NamingEnumeration results = ctx.search("ou=people,o=tcl,c=cn", "(objectClass=inetOrgPerson)", new SearchControls()); ``` ...
5. **启动与测试**:启动SUN LDAP服务器,并使用`ldapsearch`或Java LDAP API进行测试查询,确保服务器工作正常。 6. **安全管理**:配置访问控制策略,设置用户权限和认证机制。 **使用Java与SUN LDAP交互** 在...
- **查询操作**:编写 LDAP 查询语句,利用`DirContext.search()`方法获取匹配的条目。 - **添加与删除**:使用`DirContext.bind()`和`DirContext.unbind()`方法添加或删除条目。 - **更新操作**:通过`...
DirContext dirContext = (DirContext) initialContext.lookup(new InitialContext().getEnvironment(), ldapUrl); // 绑定到 LDAP 服务器 dirContext.bind(bindDN, bindPassword); // 执行 LDAP 查询 ...
LDAP增、删、改、查操作 LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)是用于管理目录服务的协议,广泛应用于身份验证、授权和目录管理等领域。本文将对LDAP的增、删、改、查操作进行详细...
使用`DirContext.search()`方法可以执行LDAP查询。查询语法遵循LDAP的过滤表达式,例如:`"(cn=John Doe)"`。还可以指定搜索的基DN(Distinguished Name)和搜索范围。 5. 添加、删除和修改条目: - 添加条目:...
使用`DirContext`的`search`方法可以执行LDAP查询。查询语法基于LDAP过滤器,例如查找所有用户: ```java SearchControls controls = new SearchControls(); controls.setSearchScope(SearchControls.SUBTREE_SCOPE...
LDAP 查询可以通过`NamingEnumeration`接口实现,调用`SearchControls`和`DirContext`的`search()`方法。你可以定义搜索过滤器来精确定位需要的条目,并指定要返回的属性。 9. **示例代码** 提供的压缩包"jndi....
然后,通过 LdapConnectionFactory 获取 DirContext 实例,接着调用 LdapOperUtils 的 `search` 方法执行 LDAP 查询。最后,记得关闭 LDAP 连接以释放资源。 总之,通过封装 JNDI 和 LDAP 操作,我们可以创建易于...
使用`ctx.search()`方法可以执行LDAP查询。例如,查找所有属于特定组的用户: ```java SearchControls controls = new SearchControls(); controls.setSearchScope(SearchControls.SUBTREE_SCOPE); // 搜索整个...
2. `LdapContext`:扩展了`DirContext`,包含了更具体的LDAP操作方法,如搜索、修改等。 3. `NamingEnumeration`:用于遍历目录服务中的结果集。 **三、连接LDAP服务器** 连接LDAP服务器通常涉及以下步骤: 1. 创建...
3. **LdapContext**: 是一个特定于LDAP的NamingContext,提供了额外的 LDAP 操作方法,如search(),bind(),unbind(),rename()等。 4. **SearchControls**: 这个类用来设置搜索操作的参数,如搜索范围、时间限制、...
通过`DirContext`的`search()`方法,指定搜索过滤器和搜索控制。 ### 示例项目 提供的压缩包`SpringLDAPClient`是一个基于Eclipse的项目,包含示例代码来演示上述操作。导入该项目后,你可以编译并运行,观察...
在LDAPv3(LDAP版本3)中,Java LDAP API通过一套类和方法实现了目录服务的标准化访问。这些类和方法提供了与服务器进行通信的机制,包括连接、身份验证、操作请求以及错误处理。 关键组件和概念: 1. **`...
**LDAP搭建及其Java代码连接** LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,主要用于存储...实际应用中,还需考虑性能优化、安全性(如SSL/TLS加密、Kerberos集成)以及目录同步等问题。
DirContext context = (DirContext) initial.lookup("ldap://223.254.105.3:389"); ``` **第二步:** 创建一个`Attributes`对象,用于存放用户对象的属性。 ```java Attributes attrs = new BasicAttributes(); ``...
4. **查找操作**:使用`DirContext.search()`方法执行基于过滤器的查询。过滤器是根据特定格式编写的字符串,用于指定要查找的条目特征。例如,查找所有属于特定组的用户。 5. **添加、删除和更新条目**:使用`...