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