java獲取AD域用戶信息


java如何獲取AD域用戶信息?
http://aa00aa00.iteye.com/blog/1276936
http://blog.sina.com.cn/s/blog_6ef2c4540100nuvq.html
 
package com.webservice.message;
 
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
public class ADOperTest {
 public ADOperTest() {
 }
 public String GetADInfo(String name ) {
 
  String userName = name; // 用戶名稱
  if(userName==null){
 userName = "";
  }
  String company = "";
  String host = "10.10.10.21"; // AD服務器
  String port = "389"; // 端口
  String url = new String("ldap://" + host + ":" + port);
  Hashtable HashEnv = new Hashtable();
  // String adminName ="CN=oyxiaoyuanxy,CN=Users,DC=Hebmc,DC=com";//AD的用戶名
  String adminName = "cq\\administrator"; // 注意用戶名的寫法:domain\User 
  String adminPassword = "prd@"; // 密碼
  HashEnv.put(Context.SECURITY_AUTHENTICATION, "simple"); // LDAP訪問安全級別
  HashEnv.put(Context.SECURITY_PRINCIPAL, adminName); // AD User
  HashEnv.put(Context.SECURITY_CREDENTIALS, adminPassword); // AD Password
  HashEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory"); // LDAP工廠類
  HashEnv.put(Context.PROVIDER_URL, url);
  try {
   LdapContext ctx = new InitialLdapContext(HashEnv, null);
   // 域節點
   String searchBase = "OU=重慶煙草,DC=cq,DC=tobacco,DC=com,DC=cn";
   // LDAP搜索過濾器類
   String searchFilter = "objectClass=User";
   // 搜索控制器
   SearchControls searchCtls = new SearchControls(); // Create the
   // search
   // controls
   // 創建搜索控制器
   searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE); // Specify
   // the
   // search
   // scope
   // 設置搜索范圍
   // searchCtls.setSearchScope(SearchControls.OBJECT_SCOPE); //
   // Specify the search scope 設置搜索范圍
//   String returnedAtts[] = { "memberOf", "distinguishedName",
//     "Pwd-Last-Set", "User-Password", "cn" };// 定制返回屬性
   String returnedAtts[] = { "company" };// 定制返回屬性
   
   // String returnedAtts[] = { "url", "whenChanged", "employeeID",
   // "name", "userPrincipalName", "physicalDeliveryOfficeName",
   // "departmentNumber", "telephoneNumber", "homePhone",
   // "mobile", "department", "sAMAccountName", "whenChanged",
   // "mail" }; // 定制返回屬性
   searchCtls.setReturningAttributes(returnedAtts); // 設置返回屬性集
   // 根據設置的域節點、過濾器類和搜索控制器搜索LDAP得到結果
   NamingEnumeration answer = ctx.search(searchBase, searchFilter,
     searchCtls);// Search for objects using the filter
   // 初始化搜索結果數為0
   int totalResults = 0;// Specify the attributes to return
   int rows = 0;
   while (answer.hasMoreElements()) {// 遍歷結果集
    SearchResult sr = (SearchResult) answer.next();// 得到符合搜索條件的DN
    System.out.println(++rows
      + "************************************************");
    
    String dn = sr.getName();
    System.out.println(dn);
    String match = dn.split("CN=")[1].split(",")[0];//返回格式一般是CN=ptyh,OU=專賣
    System.out.println(match);
    if(userName.equals(match)){
    Attributes Attrs = sr.getAttributes();// 得到符合條件的屬性集
    if (Attrs != null) {
     try {
      for (NamingEnumeration ne = Attrs.getAll(); ne.hasMore();) {
       Attribute Attr = (Attribute) ne.next();// 得到下一個屬性
       System.out.println(" AttributeID=屬性名:"+ Attr.getID().toString());
       // 讀取屬性值
       for (NamingEnumeration e = Attr.getAll(); e.hasMore(); totalResults++) {
      company =  e.next().toString();
        System.out.println("    AttributeValues=屬性值:" + company);
       }
       System.out.println("    ---------------");
       
      }
     } catch (NamingException e) {
      System.err.println("Throw Exception : " + e);
     }
    }//if
    }
   }//while
   System.out.println("************************************************");
   System.out.println("Number: " + totalResults);
   ctx.close();
  } catch (NamingException e) {
   e.printStackTrace();
   System.err.println("Throw Exception : " + e);
  }
  return company;
 }
 public static void main(String args[]) {
  // 實例化
  ADOperTest ad = new ADOperTest();
  ad.GetADInfo("shz");
 }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM