使用java列出ldap中的所有sAMAccountName
我想从ldap获取所有sAMAccountName的列表,下面是通过使用sAMAccountName为我提供用户ldap属性的方法使用java列出ldap中的所有sAMAccountName,java,active-directory,ldap,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, "(sAMAccount
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");
}
public static void searchUserFromLdap(字符串samAccountName)引发异常{
SearchResult SearchResult=ldapConnection.search(“CN=XX,DC=XX,DC=XX”,SearchScope.SUB,”(sAMAccountName=“+sAMAccountName+”));
如果(searchResult.getSearchEntries().size()我不确定什么是ldapConnection
。它来自哪里
从方法的外观来看,第三个参数是LDAP搜索筛选器。您只需将此筛选器更改为以下内容:
(objectClass=user)
因此,方法调用将是:
SearchResult searchResult = ldapConnection.search(
"CN=XX,DC=XX,DC=XX",
SearchScope.SUB,
"(objectClass=user)");
SearchResult searchResult = ldapConnection.search(
"CN=XX,DC=XX,DC=XX",
SearchScope.SUB,
"(objectClass=user)",
"sAMAccountName");
SearchResult
将包含在CN=XX,DC=XX,DC=XX
下找到的所有用户
如果它来自unbounded,那么您可以添加第四个参数来定义您只希望为每个结果返回sAMAccountName
ldap属性
SearchResult searchResult = ldapConnection.search(
"CN=XX,DC=XX,DC=XX",
SearchScope.SUB,
"(objectClass=user)");
SearchResult searchResult = ldapConnection.search(
"CN=XX,DC=XX,DC=XX",
SearchScope.SUB,
"(objectClass=user)",
"sAMAccountName");
有关LDAP搜索筛选器的更多详细信息,请参阅以下资源:
我不确定上面的文章,因为我还没有尝试过,但在阅读了oracle文档后,我修改了搜索查询,结果成功了,下面是我所做的
public static void getListOfAllSamAccountName() throws Exception {
List<String> samAccountNameList = null;
SearchResult searchResult = ldapConnection.search(
"CN=XX,DC=XX,DC=xx", SearchScope.SUB,
"(sAMAccountName=*)");
if (searchResult.getSearchEntries().size() <= 0) {
System.out.println("No such user found in LDAP");
return;
}
samAccountNameList = new ArrayList<String>();
System.out.println("Start :- LDAP attributes for given user\n");
for (SearchResultEntry searchResultEntry : searchResult
.getSearchEntries()) {
Attribute attribute = searchResultEntry
.getAttribute("sAMAccountName");
String samAccountName = attribute.getValue();
samAccountNameList.add(samAccountName);
}
if (samAccountNameList != null) {
System.out
.println("*******************************List of Same account Name******************************");
for (String samAccountName : samAccountNameList) {
System.out.println(samAccountName);
}
}
System.out.println("\nEnd :- LDAP attributes for given user");
}
public static void getListOfAllSamAccountName()引发异常{
List-samAccountNameList=null;
SearchResult SearchResult=ldapConnection.search(
“CN=XX,DC=XX,DC=XX”,SearchScope.SUB,
“(sAMAccountName=*)”;
如果(searchResult.getSearchEntries().size()你对我的回答是对的,我忘了过滤对象类。回答好。你最好使用objectCategory
。我有相关的问题,但我是初学者……如果有子域(childa、abc.com childb.abc.com、childc.abc.com)并且包含相同的samaccountname(123456789)广告将如何进行身份验证?是否将逐个检查子域,以便对用户进行身份验证?我的应用程序仅使用samaccountname作为登录id。每个子域中此samaccount的密码有何不同??