0 0

ldap DirContext search方法问题3

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大小写对吗

各种大小写组合都试过,应该不是这个问题
2012年2月02日 16:04

4个答案 按时间排序 按投票排序

0 0

objectclass大小写对吗

2012年2月03日 11:22
0 0

dc=hisome,dc=com
写这个参数也不行吗

2012年2月02日 17:50
0 0

enums = ctx.search([color=red]""[/color], filter, sh);   
这里面还少一个参数

2012年2月02日 17:37
0 0

 String filter = "(objectclass=*)";
()去掉试试

2012年2月02日 17:13

相关推荐

    Ldap 分页问题

    使用`DirContext.search()`方法时,可以添加`PagedResultsControl`来实现分页。 `工具`标签可能暗示了有现成的库或者工具可以帮助处理这个问题,比如`UnboundID LDAP SDK`,它提供了方便的分页查询API。 压缩包中...

    LDAP以及JAVA方法操作详解.doc

    2. **搜索目录**:利用`DirContext.search()`方法执行LDAP查询。可以指定过滤器(如“cn=John Doe”)和搜索基DN(Distinguished Name,如“ou=People,dc=example,dc=com”)。 3. **读取条目**:找到的对象是`...

    java对LDAP的增删改查

    要查询 LDAP 服务器,可以使用 `DirContext` 对象的 `search()` 方法: ```java NamingEnumeration results = ctx.search("ou=people,o=tcl,c=cn", "(objectClass=inetOrgPerson)", new SearchControls()); ``` ...

    LDAP.rar_java ldap_ldap_ldap java

    5. **启动与测试**:启动SUN LDAP服务器,并使用`ldapsearch`或Java LDAP API进行测试查询,确保服务器工作正常。 6. **安全管理**:配置访问控制策略,设置用户权限和认证机制。 **使用Java与SUN LDAP交互** 在...

    ldap的一个实例

    - **查询操作**:编写 LDAP 查询语句,利用`DirContext.search()`方法获取匹配的条目。 - **添加与删除**:使用`DirContext.bind()`和`DirContext.unbind()`方法添加或删除条目。 - **更新操作**:通过`...

    java 连接ldap 服务器源码

    DirContext dirContext = (DirContext) initialContext.lookup(new InitialContext().getEnvironment(), ldapUrl); // 绑定到 LDAP 服务器 dirContext.bind(bindDN, bindPassword); // 执行 LDAP 查询 ...

    LDAP增、删、改、查操作

    LDAP增、删、改、查操作 LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)是用于管理目录服务的协议,广泛应用于身份验证、授权和目录管理等领域。本文将对LDAP的增、删、改、查操作进行详细...

    java操作LDAP的架包

    使用`DirContext.search()`方法可以执行LDAP查询。查询语法遵循LDAP的过滤表达式,例如:`"(cn=John Doe)"`。还可以指定搜索的基DN(Distinguished Name)和搜索范围。 5. 添加、删除和修改条目: - 添加条目:...

    3.3.01_LDAP Java API 使用指南.doc

    使用`DirContext`的`search`方法可以执行LDAP查询。查询语法基于LDAP过滤器,例如查找所有用户: ```java SearchControls controls = new SearchControls(); controls.setSearchScope(SearchControls.SUBTREE_SCOPE...

    jndi.zip_java ldap_jndi_jndi ldap_ldap_ldap java

    LDAP 查询可以通过`NamingEnumeration`接口实现,调用`SearchControls`和`DirContext`的`search()`方法。你可以定义搜索过滤器来精确定位需要的条目,并指定要返回的属性。 9. **示例代码** 提供的压缩包"jndi....

    封装JNDI的LDAP服务器的工具类

    然后,通过 LdapConnectionFactory 获取 DirContext 实例,接着调用 LdapOperUtils 的 `search` 方法执行 LDAP 查询。最后,记得关闭 LDAP 连接以释放资源。 总之,通过封装 JNDI 和 LDAP 操作,我们可以创建易于...

    JAVA LDAP

    使用`ctx.search()`方法可以执行LDAP查询。例如,查找所有属于特定组的用户: ```java SearchControls controls = new SearchControls(); controls.setSearchScope(SearchControls.SUBTREE_SCOPE); // 搜索整个...

    LDAP_Java_API_使用指南.rar

    2. `LdapContext`:扩展了`DirContext`,包含了更具体的LDAP操作方法,如搜索、修改等。 3. `NamingEnumeration`:用于遍历目录服务中的结果集。 **三、连接LDAP服务器** 连接LDAP服务器通常涉及以下步骤: 1. 创建...

    ldap开发包(java)

    3. **LdapContext**: 是一个特定于LDAP的NamingContext,提供了额外的 LDAP 操作方法,如search(),bind(),unbind(),rename()等。 4. **SearchControls**: 这个类用来设置搜索操作的参数,如搜索范围、时间限制、...

    SpringLDAP和JNDI的增删改查

    通过`DirContext`的`search()`方法,指定搜索过滤器和搜索控制。 ### 示例项目 提供的压缩包`SpringLDAPClient`是一个基于Eclipse的项目,包含示例代码来演示上述操作。导入该项目后,你可以编译并运行,观察...

    Ldap的api函数集

    在LDAPv3(LDAP版本3)中,Java LDAP API通过一套类和方法实现了目录服务的标准化访问。这些类和方法提供了与服务器进行通信的机制,包括连接、身份验证、操作请求以及错误处理。 关键组件和概念: 1. **`...

    LDAP搭建及其Java代码连接

    **LDAP搭建及其Java代码连接** LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,主要用于存储...实际应用中,还需考虑性能优化、安全性(如SSL/TLS加密、Kerberos集成)以及目录同步等问题。

    LDAP 资料代码实例

    DirContext context = (DirContext) initial.lookup("ldap://223.254.105.3:389"); ``` **第二步:** 创建一个`Attributes`对象,用于存放用户对象的属性。 ```java Attributes attrs = new BasicAttributes(); ``...

    LDAP_programming_With_Java.zip_java ldap_java ldap_java program

    4. **查找操作**:使用`DirContext.search()`方法执行基于过滤器的查询。过滤器是根据特定格式编写的字符串,用于指定要查找的条目特征。例如,查找所有属于特定组的用户。 5. **添加、删除和更新条目**:使用`...

Global site tag (gtag.js) - Google Analytics