gpt4 book ai didi

Java 如何使用 DN 从 ldap 获取属性?

转载 作者:行者123 更新时间:2023-12-02 04:37:58 26 4
gpt4 key购买 nike

我有一个用于搜索组的 Java 应用程序。它非常适合基于组名称 (cn) 的搜索,但有时我会得到多个结果,因为其他分支中使用了相同的 cn。我有该组的 DN,我想知道如何根据 DN 进行搜索,或者是否可以直接访问该属性,因为我有完整路径。这是我使用的代码:

public Group getGroup( String groupName) throws Exception {

List<User> memberList = new ArrayList<User>();

// Create the search controls
SearchControls searchCtls = new SearchControls();

// Specify the search scope
searchCtls.setSearchScope( SearchControls.SUBTREE_SCOPE );

// Specify the attributes to return
String returnedAtts[] = { MEMBER_FIELD };

searchCtls.setReturningAttributes( returnedAtts );

// Specify the LDAP search filter
String searchFilter = "(&(objectClass=group)(CN=" + groupName + "))";

// Search for objects using the filter
NamingEnumeration<SearchResult> answer = ctxMap.get( configMap.get( GROUP ) ).search( configMap.get( SEARCHBASE ), searchFilter,
searchCtls );

SearchResult sr = null;


// Loop through the search results
while ( answer.hasMoreElements() ) {
sr = (SearchResult) answer.next();
}
if ( sr == null ) {
return group;
}

// Create an attribute for memberOf
javax.naming.directory.Attribute member = sr.getAttributes().get( MEMBER_FIELD );

// Enumeration of all elements in memberOf
NamingEnumeration<?> ne = member.getAll();


// Loop though the enumeration, cut unwanted characters and add all
// elements to User List
while ( ne.hasMoreElements() ) {
...
}

}

因此,我想将组的可分辨名称作为参数传递给函数,而不是组的名称,并对其进行搜索或直接获取属性。这可能吗?

PS:该代码用于获取某个群组的成员。

谢谢

最佳答案

如果您有 DN,则无需搜索。只需使用lookup() 查找即可。

关于Java 如何使用 DN 从 ldap 获取属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30536561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com