java - 使用 java 列出 ldap 中的所有 sAMAccountName

标签 java active-directory ldap

我想从 ldap 获取所有 sAMAccountName 的列表,下面是使用 samAccountName 为我提供用户的 Ldap 属性的方法

public static void searchUserFromLdap(String samAccountName) throws Exception{

    SearchResult searchResult = ldapConnection.search("CN=XX,DC=XX,DC=XX", SearchScope.SUB, "(sAMAccountName=" + samAccountName +")"); 

    if(searchResult.getSearchEntries().size()<=0){
        System.out.println("No such user found in LDAP");
        return;
    }

    System.out.println("Start :- LDAP attributes for given user\n");
    for(SearchResultEntry searchResultEntry : searchResult.getSearchEntries()){

        System.out.println(searchResultEntry.toLDIFString());
    }

    System.out.println("\nEnd :- LDAP attributes for given user");

}

此方法接受 samAccountName 并返回用户的 ldap 属性 我想获取所有 samAccountName 的列表,我已经搜索过这个,但没有得到任何相关内容,谁能告诉我如何获取 sAMAccountName 的列表。

最佳答案

我不确定 ldapConnection 是什么。是来自 unboundid

无论从方法的外观来看,第三个参数都是您的 LDAP 搜索过滤器。您只需将此过滤器更改为以下内容即可:

(objectClass=user)

所以方法调用将是:

SearchResult searchResult = ldapConnection.search(
        "CN=XX,DC=XX,DC=XX", 
        SearchScope.SUB, 
        "(objectClass=user)");

SearchResult 将包含在 CN=XX,DC=XX,DC=XX 下找到的所有用户。

如果来自 unboundid,则您可以添加第四个参数来定义您只希望为每个结果返回 sAMAccountName ldap 属性。所以这将是:

SearchResult searchResult = ldapConnection.search(
        "CN=XX,DC=XX,DC=XX", 
        SearchScope.SUB, 
        "(objectClass=user)",
        "sAMAccountName");

有关 LDAP 搜索过滤器的更多详细信息,请参阅以下资源: http://docs.oracle.com/cd/E19528-01/819-0997/gdxpo/index.html

关于java - 使用 java 列出 ldap 中的所有 sAMAccountName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26254893/

相关文章:

python - 使用 Python 从安全组中删除 AD 用户

ldap - Shiro JndiLdapRealm 针对 LDAP 的授权

linux - MediaWiki 无法让 LDAP 身份验证工作

java - 使用Hibernate将文件保存在mysql数据库中

java - 使用 "sAMAccountName"而不是 "CN"从 Java 中的 dirContext 获取 LDAP 属性

c# - 事件目录属性 "badPwdCount"

php ldap 搜索 : no such object

java - Spark SQL 看不到 hdfs 文件

JavaFX透明舞台和场景

java - Jersey 客户端收到错误的响应