1. 程式人生 > >JAVA LADP獲取AD域使用者列表資訊

JAVA LADP獲取AD域使用者列表資訊

import java.util.Enumeration;
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 void GetADInfo() {
  String userName = "xxxx"; // 使用者名稱稱
  String passwd = "xxx";
  String host = "192.168.100.14"; // AD伺服器
  String port = "389"; // 埠
  String domain = "@xxx.com"; // 郵箱的字尾名
  String url = new String("ldap://" + host + ":" + port);
  String user = userName.indexOf(domain) > 0 ? userName : userName
    + domain;
  Hashtable HashEnv = new Hashtable();
  // String adminName ="CN=oyxiaoyuanxy,CN=Users,DC=Hebmc,DC=com";//AD的使用者名稱
  String adminName = "xueqiang"; // 注意使用者名稱的寫法:domain\User 或
  // 
[email protected]
adminName = "xueqiang"; // 注意使用者名稱的寫法:domain\User 或 [email protected] String adminPassword = "123456"; // 密碼 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 = "DC=wanda-dev,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[] = { "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 + "************************************************"); System.out.println(sr.getName()); 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++) { System.out.println(" AttributeValues=屬性值:" + e.next().toString()); } System.out.println(" ---------------"); // 讀取屬性值 // Enumeration values = Attr.getAll(); // if (values != null) { // 迭代 // while (values.hasMoreElements()) { // System.out.println(" AttributeValues=屬性值:"+ // values.nextElement()); // } // } // System.out.println(" ---------------"); } } catch (NamingException e) { System.err.println("Throw Exception : " + e); } } } System.out .println("************************************************"); System.out.println("Number: " + totalResults); ctx.close(); } catch (NamingException e) { e.printStackTrace(); System.err.println("Throw Exception : " + e); } } /* public static void main(String args[]) { // 例項化 ADOperTest ad = new ADOperTest(); ad.GetADInfo(); }*/ public static void main(String args[]) { Hashtable HashEnv = new Hashtable(); String LDAP_URL = "ldap://xxx.com:389"; //LDAP訪問地址 String adminName = "
[email protected]
"; //注意使用者名稱的寫法:domain\User 或 [email protected] String adminPassword = "xxxx"; //密碼 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, LDAP_URL); try { LdapContext ctx = new InitialLdapContext(HashEnv, null); SearchControls searchCtls = new SearchControls(); //Create the search controls searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE); //Specify the search scope String searchFilter = "objectClass=User"; //specify the LDAP search filter String searchBase = "DC=xxx,DC=com"; //Specify the Base for the search//搜尋域節點 int totalResults = 0; String returnedAtts[] = { "url", "whenChanged", "employeeID", "name", "userPrincipalName", "physicalDeliveryOfficeName", "departmentNumber", "telephoneNumber", "homePhone", "mobile", "department", "sAMAccountName", "whenChanged", "mail"}; //定製返回屬性 searchCtls.setReturningAttributes(returnedAtts); //設定返回屬性集 //Search for objects using the filter NamingEnumeration answer = ctx.search(searchBase, searchFilter,searchCtls); if(answer==null||answer.equals(null)){ System.out.println("answer is null"); }else{ System.out.println("answer not null"); } System.out.println(answer.hasMoreElements()); while (answer.hasMoreElements()) { SearchResult sr = (SearchResult) answer.next(); System.out.println("************************************************"); System.out.println(sr.getName()); 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++) { System.out.println(" AttributeValues=" + e.next().toString()); } System.out.println(" ---------------"); //讀取屬性值 Enumeration values = Attr.getAll(); if (values != null) { // 迭代 while (values.hasMoreElements()) { System.out.println(" AttributeValues=" + values.nextElement()); } } System.out.println(" ---------------"); } } catch (NamingException e) { System.err.println("Throw Exception : " + e); } } } System.out.println("Number: " + totalResults); ctx.close(); } catch (NamingException e) { e.printStackTrace(); System.err.println("Throw Exception : " + e); } } }

相關推薦

JAVA LADP獲取AD使用者列表資訊

import java.util.Enumeration; import java.util.Hashtable; import javax.naming.Context; import javax.naming.NamingEnumeration; import jav

AD 服務簡介(二)- Java 獲取 AD 用戶

set env red smo 關系數據庫 sign exception ini 性能 博客地址:http://www.moonxy.com 一、前言 先簡單簡單回顧上一篇博文中關於 AD 域和 LDAP目錄訪問協議的基本概念。 AD(Active Directory)活

Java反射 獲取Class及Class對應資訊

一.獲取Class的三種方式 Class.forName(String clazzName) 必須指定全限定類名(com.xxx.xxx.Xxx)  呼叫某個類的class屬性獲取Class物件  Object.class 呼叫某個物件的getCl

使用VBSCRIPT拉取AD使用者列表

修改下面兩項,並在IIS下執行: objConn.Properties("User ID") = "domain\account" 'domain account with read access to LDAP objConn.Properties("Password")

獲取登入帳號資訊方式之 —-IIS(VB)

前言之前總結過一篇在Java 的Web 專案中獲取客戶端帳號資訊的文章。參見以上鍊接的內容。除了那些方式之外, 還可以使用IIS 和VB  來獲取客戶端域帳號資訊。 (這裡介紹的使用場景還是在Java web 專案中使用IIS 和VB 的方式來獲取域帳號資訊。)實際使用場景環

java 根據OU獲取Windows的AD賬戶

import java.util.Hashtable; import javax.naming.Context; import javax.naming.NamingEnumeration; import javax.naming.NamingException; im

selenium+java獲取列表中的值

href word arc 試用 res boolean sent api 斷言 selenium+java:獲取列表中的值 (2011-08-23 17:14:48) 標簽: 雜談 分類: selenium 初步研究利

AD控制器所有使用的端口明細列表

ad域 windows server AD域控制器所有使用的端口明細列表:lol端口 協議 應用程序協議 系統服務名稱 n/a GRE GRE(IP 協議 47) 路由和遠程訪問 n/a ESP IPSec ESP(IP 協議 50) 路由和遠程訪問 n/a AH IPSec AH(IP 協議 51)

JAVA使用Ldap操作AD

!= 多臺 com 登錄驗證 結果 ssl 服務器 不明確 tst 項目上遇到的需要在集成 操作域用戶的信息的功能,第一次接觸ad域,因為不了解而且網上其他介紹不明確,比較費時,這裏記錄下。 說明: (1). 特別註意:Java操作查詢域用戶信息獲取到的數據和域管理員在

Java獲取資料庫中的資料,獲取下拉列表中的資料, 獲取省、市、區的資料,根據上一層去控制下一層

$(function() { //validateRule(); getDept(); $("select[name='deptNamee']").change(function() { var deptCode = $("select[name='deptN

java提取(獲取)部落格資訊(內容)

package com.wbg.my.service; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.*; import java.util.regex.Matcher

java使用淘寶的介面獲取Ip對應的地區資訊

package com.ztsy.zbt.utils; import java.io.UnsupportedEncodingException; import java.io.BufferedReader; import java.io.DataOutputStream; import j

Java/Android 獲取資料夾的檔案列表(file.listFiles())並按名稱排序,中文優先

排序規則 因為是中國人,習慣性看中文資料夾放前面比較順眼,所以在別人部落格(https://blog.csdn.net/da_caoyuan/article/details/56664673)的基礎上,加上了自己的排序規則。 預設排序規則是按照ASCII碼錶排序(http://asci

java 將學生列表資訊按照成績進行排序,並建立新的檔案儲存

1 張三1 18 男 88 1385551 2 張三 18 女 99 1385552 3 張三 18 男 88 1385553 4 李四1 19 男 66 1385554 5 李四 20 女 88 1385555 6 李四 19 男 66 1385556 7 王五 20 女

java程式碼獲取jenkins資料,構建歷史等資訊

本篇文章主要介紹如何獲取jenkins構建歷史資料等資訊,不包含java構建等操作。 1.jenkins所需jar,後續如有缺少可百度自行補齊。 <!--jenkins所需jar包開始--> <!-- https://mvnreposit

Java中使用反射獲取一個類的全部資訊

public static void getFunctionAllMessages(String className) throws ClassNotFoundException, InstantiationException, IllegalAccessExcept

實現微信開啟網頁時,獲取當前微信使用者資訊Java)(基於snsapi_userinfo方式)

/** * 1 第一步:使用者同意授權,獲取code * 2 第二步:通過code換取網頁授權access_token * 3 第三步:重新整理access_token(如果需要) * 4 第四步:拉取使用者資訊(需scope為 snsapi_user

java獲取異常的堆疊資訊

做的java開發的時候,經常會遇到程式碼拋異常後,需要把異常資訊儲存到資料庫或者上傳到雲伺服器做快取分析。這時候就需要獲取異常的堆疊資訊(詳細錯誤資訊)。人有的用e.getMessage()來電子雜誌異常資訊,但是這樣獲取到的資訊內容並不全,而且有時候為空。我們可以用下面方法

通過java程式碼獲取jvm資訊和系統資訊

轉載自LOC_Thomas的部落格 前言 隨著微服務的概念逐漸流行,監控成了必不可少的模組,本篇文章主要介紹一下如何通過java程式碼獲得一些核心的資料,方便從各個方面對應用進行監控 獲取jvm資料 jvm資料是監控應用很重要的一系列引數,一般本地開發的時候可以通過jcons

java開發微信公眾號,公眾號與java後臺獲取連線,自動回覆,關注獲取使用者資訊,取消關注刪除使用者資訊

controller:@RequestMapping(method = { RequestMethod.GET })public void gget(HttpServletRequest request, HttpServletResponse response) throw