我想使用java代碼從活動目錄中獲取特定用戶的所有屬性。例如:如果我輸入一個電子郵件ID([email protected]),那麼我怎樣才能獲取用戶的所有屬性的電子郵件ID爲[email protected]如何使用java代碼從Active Directory中獲取用戶的所有屬性
我是JNDI API的新手。請幫我..
我想使用java代碼從活動目錄中獲取特定用戶的所有屬性。例如:如果我輸入一個電子郵件ID([email protected]),那麼我怎樣才能獲取用戶的所有屬性的電子郵件ID爲[email protected]如何使用java代碼從Active Directory中獲取用戶的所有屬性
我是JNDI API的新手。請幫我..
嘗試用下面的代碼:
private static String ldapUrl = "ladp//url:port";
private static String contextFactory = "com.sun.jndi.ldap.LdapCtxFactory";
private static String securityAuthType = "simple";
private static String securityPrincipal = "your service account";
private static String securityCredentials="password";
public static void main(String[] args) {
try {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, contextFactory);
env.put(Context.PROVIDER_URL, ldapUrl);
env.put(Context.SECURITY_AUTHENTICATION, securityAuthType);
env.put(Context.SECURITY_PRINCIPAL, securityPrincipal);
env.put(Context.SECURITY_CREDENTIALS, securityCredentials);
DirContext context = new InitialDirContext(env);
SearchControls ctrl = new SearchControls();
ctrl.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration enumeration = context.search("dc=xxx,dc=com", query, ctrl);
while (enumeration.hasMore()) {
SearchResult result = (SearchResult) enumeration.next();
Attributes attribs = result.getAttributes();
System.out.println("Attributes:"+attribs);
NamingEnumeration<String> attribsIDs = attribs.getIDs();
System.out.println(attribsIDs);
// loop on attributes
StringBuffer output = new StringBuffer();
int iAttr = 0;
while (attribsIDs.hasMore()) {
String attrID = attribsIDs.next();
System.out.println("AttributeId:"+ iAttr+" "+attrID);
NamingEnumeration values = ((BasicAttribute) attribs.get(attrID)).getAll();
System.out.println("Naming Enumertaion Values"+ values);
感謝您的幫助... –
此代碼對您有用嗎?或者您需要任何其他信息? –
嘗試用以下建議代碼。在代碼的最後添加一些其他字段 –