有沒有辦法使用java獲取Active Directory中所有組的名稱?LDAP:如何獲取Active Directory中的所有組?
回答
使用Java JNDI,並搜索(objectclass = group)並請求cn屬性。這將獲得所有組名稱。
代碼示例:
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
public class Test {
public static String ldapUri = "ldap://localhost";
public static String usersContainer = "cn=users,dc=example,dc=com";
public static void main(String args[]) {
if (args.length != 2) {
System.out.println("Usage: test userName password");
return;
}
String username = args[0];
String password = args[1];
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ldapUri);
env.put(Context.SECURITY_PRINCIPAL, username);
env.put(Context.SECURITY_CREDENTIALS, password);
try {
DirContext ctx = new InitialDirContext(env);
SearchControls ctls = new SearchControls();
String[] attrIDs = { "cn" };
ctls.setReturningAttributes(attrIDs);
ctls.setSearchScope(SearchControls.ONELEVEL_SCOPE);
NamingEnumeration answer = ctx.search(usersContainer, "(objectclass=group)", ctls);
while (answer.hasMore()) {
SearchResult rslt = (SearchResult) answer.next();
Attributes attrs = rslt.getAttributes();
System.out.println(attrs.get("cn"));
}
ctx.close();
} catch (NamingException e) {
e.printStackTrace();
}
}
}
感謝您的回覆。當我嘗試使用它時,出現以下錯誤:「javax.naming.NamingException:[LDAP:error code 1 - 00000000:LdapErr:DSID-0C090627,comment:爲了執行此操作,必須在連接上成功完成綁定。,數據0,vece「任何想法? – user709389 2011-04-20 10:46:59
看起來像你沒有正確認證。您是否連接到正確的ldap服務器?您的用戶fdn是否正確(例如cn = Administrator,cn = users,dc = example,dc = com)並且密碼正確? – kalyan 2011-04-21 05:59:38
是的,我的電話是錯的(愚蠢的我)。無論如何,現在我得到以下:「javax.naming.AuthenticationException:[LDAP:錯誤代碼49 - 80090308:LdapErr:DSID-0C090334,評論:AcceptSecurityContext錯誤,數據525,vece」 – user709389 2011-04-21 07:51:37
你可以使用這個庫。它易於使用,功能強大的
我用格利揚的例子來查詢的用戶羣體,但發現,雖然查詢工作,它沒有返回的所有用戶組。經過一番挖掘,我開始意識到AD全球目錄和基於this example,我能夠修改Kalyan的答案,以返回全局編錄中的所有用戶組。
所需要的變化是:
- 新增全球港口
3268
到ldapUri 設置的第一個參數
Context.search
到""
。public static void main(String args[]) { String ldapUri = "ldap://ad.domain.com"; if (args.length != 2) { System.out.println("Usage: test userName password"); return; } String username = args[0]; String password = args[1]; Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, ldapUri + ":3268"); env.put(Context.SECURITY_PRINCIPAL, username); env.put(Context.SECURITY_CREDENTIALS, password); try { DirContext context = new InitialDirContext(env); SearchControls searchControls = new SearchControls(); String[] attrIDs = {"cn"}; searchControls.setReturningAttributes(attrIDs); searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE); NamingEnumeration answer = context.search("", "(objectclass=group)", searchControls); while (answer.hasMore()) { SearchResult rslt = (SearchResult) answer.next(); Attributes attrs = rslt.getAttributes(); System.out.println(attrs.get("cn")); } context.close(); } catch (NamingException e) { e.printStackTrace(); } }
- 1. LDAP:如何讓所有的用戶和組從Active Directory
- 2. 獲取Active Directory中的所有用戶
- 3. 如何選擇Active Directory的所有組?
- 4. Django LDAP Active Directory
- 5. 如何檢索LDAP中Active Directory的所有OU?
- 6. 如何獲取用戶所屬的Active Directory中的所有用戶組,PHP(連接到LDAP目錄)
- 7. 列出所有Active Directory組
- 8. 在Active Directory中的C#LDAP
- 9. 獲取Active Directory組中的所有用戶
- 10. 從Active Directory中的組獲取所有用戶和聯繫人
- 11. 獲取Active Directory組中的所有用戶
- 12. 使用GroupPrincipal從Active Directory中的組獲取所有用戶
- 13. 獲取.NET Azure Active Directory組中的所有者
- 14. 從Active Directory PrincipalContext獲取所有用戶
- 15. 從Active Directory獲取所有用戶?
- 16. .NET Active Directory - 獲取特定Active Directory組中的用戶列表
- 17. 如何使用C#獲取Active Directory中所有域的列表
- 18. Websphere 6.1 Ldap Active Directory
- 19. 如何使用Windows API獲取Active Directory的LDAP服務器URL?
- 20. Active Directory中組的所有權,
- 21. 獲取Active Directory中的用戶組
- 22. 如何從LDAP Active Directory獲取用戶數據?
- 23. 如何獲取Active Directory組中的組的列表
- 24. Active Directory的使用,LDAP
- 25. Active Directory上的LDAP搜索
- 26. Active Directory的LDAP路徑
- 27. 使用VBScript檢索Active Directory(LDAP)中的所有用戶
- 28. 取從Active Directory組
- 29. 從Active Directory獲取
- 30. 如何獲取Active Directory中「成員」選項卡中的組
你使用Spring LDAP? – lobster1234 2011-04-15 08:06:31