Java新增、修改MS AD使用者密碼
最近研究了下在AD中如何新增和修改使用者密碼。AD中修改密碼一定要通過SSL或TLS才可以進行修改,這是MS硬性規定的,這就造成了還要做很多其它方面的配置工作,很麻煩,不過想想也合理,傳輸密碼不加密被截獲了也就完了。
前期要做的工作基本就是安裝CA,獲取證書,繫結keystore等等,過幾天會詳細寫一下這幾步的操作,現在先貼出程式碼。
import java.io.UnsupportedEncodingException;
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.BasicAttribute;
import javax.naming.directory.DirContext;
import javax.naming.directory.ModificationItem;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
public class OpAD{
private LdapContext ctx = null;
private String adminpassword = "password";
private String keystore = "C:/testca.keystore";
private String keyPassword = "changeit";
private String searchBase = "DC=testad,DC=com";
private String returnedAtts[] = { "distinguishedName" };
private boolean initial_Ldap() {
Hashtable env = new Hashtable();
System.setProperty("javax.net.ssl.trustStore", keystore);
System.setProperty("javax.net.ssl.trustStorePassword", keyPassword);
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, adminName);
env.put(Context.SECURITY_CREDENTIALS, adminpassword);
env.put(Context.SECURITY_PROTOCOL, "ssl");
env.put(Context.PROVIDER_URL, ldapURL);
try {
System.out.println("Start InitialLdapContext");
ctx = new InitialLdapContext(env, null);
System.out.println("InitialLdapContext succeed");
} catch (NamingException e) {
System.out.println("Problem initial_Ldap NamingException: " + e);
return false;
}
return true;
}
private boolean close_Ldap() {
System.out.println("Close Ldap");
try {
ctx.close();
} catch (NamingException e) {
System.out.println("Problem close_Ldap NamingException: " + e);
return false;
}
return true;
}
private String search_distinguishedName(String username) {
String searchFilter = "(&(objectClass=user)(cn=" + username + "))";
try {
System.out.println("Start search " + username + "'s distinguishedName");
SearchControls searchCtls = new SearchControls();
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
searchCtls.setReturningAttributes(returnedAtts);
NamingEnumeration answer = ctx.search(searchBase, searchFilter,
searchCtls);
if (answer.hasMoreElements()) {
SearchResult sr = (SearchResult) answer.next();
Attributes attrs = sr.getAttributes();
if (attrs != null) {
NamingEnumeration ae = attrs.getAll();
Attribute attr = (Attribute) ae.next();
NamingEnumeration e = attr.getAll();
return (String) e.next();
}
}
} catch (NamingException e) {
System.out
.println("Problem search_distinguishedName NamingException: " + e);
return "error";
}
return "none";
}
private boolean mod_Pwd(String username, String password) {
ModificationItem[] mods = new ModificationItem[1];
String newQuotedPassword = "/"" + password + "/"";
try {
System.out.println("Start reset password");
byte[] newUnicodePassword = newQuotedPassword.getBytes("UTF-16LE");
mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE,
new BasicAttribute("unicodePwd", newUnicodePassword));
ctx.modifyAttributes(username, mods);
System.out.println("Finish reset password" + username);
} catch (UnsupportedEncodingException e) {
System.out.println("Problem mod_Pwd UnsupportedEncodingException: " + e);
return false;
} catch (NamingException e) {
System.out.println("Problem mod_Pwd NamingException: " + e);
return false;
}
return true;
}
public static void main(String args[]) {
OpAD inst = new OpAD();
inst.initial_Ldap();
String username = inst.search_distinguishedName("testuser");
inst.mod_Pwd(username, "1234AbcD");
inst.close_Ldap();
}
}
相關推薦
Java新增、修改MS AD使用者密碼
最近研究了下在AD中如何新增和修改使用者密碼。AD中修改密碼一定要通過SSL或TLS才可以進行修改,這是MS硬性規定的,這就造成了還要做很多其它方面的配置工作,很麻煩,不過想想也合理,傳輸密碼不加密被截獲了也就完了。前期要做的工作基本就是安裝CA,獲取證書,繫結keystor
JAVA通過SSL修改MS AD賬戶密碼
java通過ssl修改ms ad賬戶密碼JAVA通過SSL修改MS AD賬戶密碼我們上一篇文章介紹了JAVA通過SSL創建MS AD賬戶及設置密碼,今天我們主要介紹JAVA通過SSL修改MS AD賬戶密碼,關於證書介紹,我們上一篇已經介紹了,所以直接進入重點,上代碼我們準備修改上一篇介紹時創建的gaowenl
Java 新增、修改、讀取、刪除PPT備註
概述 幻燈片中的備註資訊是隻提供給幻燈片演講者觀看的特定內容,在演講者放映幻燈片時,備註資訊可給演講者提供講解思路,起到輔助講解的作用。本文將通過Java程式來演示如何操作PPT幻燈片中的備註資訊,要點包括: 新增備註資訊 修改備註資訊 讀取備註資訊 刪除備註資訊 使用工具 Free Sp
Java 新增、修改、讀取、複製、刪除Excel批註
本文介紹通過Java程式來操作Excel批註的方法。操作內容包括批註新增(新增批註文字、背景色、字型、自適應等)、修改、讀取(文字、圖片)、複製、刪除等。 工具:Free Spire.XLS for Java (免費版) 注:Jar檔案獲取可通過官網下載包,並解壓將lib資料夾下的jar檔案匯入
Java 新增、回覆、修改(替換)、刪除Word批註
批註是一種常用於對特定文件內容進行註解的工具或方法,起到解釋說明、標記指正的作用。在本篇文章中,將介紹如何操作Word批註的方法,包括: 1. 新增批註:新增文字到批註、插入圖片到批註; 2. 回覆批註; 3. 修改或替換批註:用文字替換批註中的文字內容、用文字替換批註中的圖片、用圖片替換批註中的圖片; 4.
oracle 新增、修改 、刪除字段
div sql 同時 one value 得到 rename 創建表 num 添加字段的語法:alter table tablename add (column datatype [default value][null/not null],….); 修改字段的語法:alt
HTML5 history.pushState()和history.replaceState()新增、修改歷史記錄用法介紹
body popu spa htm 動作 使用 lang scrip null 抽空研究了下這兩個新方法,確實可以解決很多問題 1、使用pushState()方法 可以控制瀏覽器自帶的返回按鈕: 有時候我們想讓用戶點擊瀏覽器返回按鈕時,不返回,或執行其他操作,這時,
oracle 資料庫表字段新增、修改、刪除等DDL操作
oracle 資料庫表字段新增、修改、刪除等操作 1. 建立表 -- Create table create table TB_PERMISSION_ORGANIZATION ( id VARCHAR2(150) not null, parent_id
十、字典(上):什麼是字典及如何訪問、新增、修改、刪除字典中的值
文章目錄 (一)、什麼是字典 (二)、訪問字典中的值 (三)、在字典中新增鍵 - 值對 (四)、修改字典中的值 (五)、刪除字典中的值
SSM整合-03 資訊新增、修改與刪除
專案完整實現程式碼下載地址:https://download.csdn.net/download/bingbeichen/10578683。 該部分主要實現新員工資訊的新增,實現步驟包括: 在index.jsp頁面點選“新增”按鈕,彈出新增對話方塊; 向資料庫中查詢
超簡單!!——MySQL中新增、修改、刪除約束
轉自: https://blog.csdn.net/dreamsunday/article/details/22934009 ALTER TABLE:新增,修改,刪除表的列,約束等表的定義。 · 檢視列:desc 表名; · 修改表名:alter table t_book ren
UltraEdit 去除、新增、修改 右鍵選單名稱
UltraEdit 號稱世界上最好的文字編輯工具 官網: https://www.ultraedit.com/ 我的軟體版本號: UltraEdit 專業文字/十六進位制編輯器 CS (x64) 版本 24.00.0.53 依次點選 高階
Linux中新增、修改、刪除使用者和使用者組
一、使用者: 在建立使用者時,需要為新建使用者指定一使用者組,如果不指定其使用者所屬的工作組,自動會生成一個與使用者名稱同名的工作組。建立使用者user1的時候指定其所屬工作組users,例:useradd –g users user1 1、使用命令 useradd 建立使用者 例:usera
Spring4.0.6 +Quartz 2.2.1動態新增、修改、刪除、關閉定時任務(可結合資料庫以及空指標異常問題的解決)
不懂定時器的可以閱讀這位作者的文章:Quartz 2.2 的實現原理和執行過程:http://blog.csdn.net/xlxxcc/article/details/52104463 spring配置 <!-- 定時器 --> <!-- 這個類用來做需要完成的業務--&
oracle表按日期分割槽建立、新增、修改、刪除
Oracle11G分割槽表 當表中的資料量不斷增大,查詢資料的速度就會變慢,應用程式的效能就會下降,這時就應該考慮對錶進行分割槽。表進行分割槽後,邏輯上表仍然是一張完整的表,只是將表中的資料在物理上存放到多個表空間(物理檔案上),這樣查詢資料時,不至於每次都掃描整張表。 作用: Oracle的表
使用LINQ、Lambda 表示式 、委託快速比較兩個集合,找出需要新增、修改、刪除的物件
本文需要對C#裡的LINQ、Lambda 表示式 、委託有一定了解。 在工作中,經常遇到需要對比兩個集合的場景,如: 頁面集合資料修改,需要儲存到資料庫 全量同步上游資料到本系統資料庫 在這些場景中,需要識別出需要新增、更新、刪除的資料,由於每次應用是,需要比較的物件型別不一致,因此寫了個相對通用的方
十、字典與 set(上):什麼是字典及如何訪問、新增、修改、刪除字典中的值
(一)、什麼是字典 字典:字典是放在花括號中一系列的鍵-值表示 # This is a dict student_0 = {'name': 'zhangsan', 'age': '20'} 冒號
PHP中MongoDB資料庫的連線、新增、修改、查詢、刪除等操作例項
PHP 擴充套件mongon.mod.dll下載http://cn.php.net/manual/en/mongo.installation.php#mongo.installation.windows 然後php.ini新增 extension=php_mongo.dll
php操作MongoDB基礎教程(連線、新增、修改、刪除、查詢)
舊版本mongo例項化用:new Mongo(); 新mongo例項化 <?php $m = new MongoClient(); // 連線 $db = $m->selectDB("example"); ?> //連線localhost:2701
轉sql server新增、修改字段語句(整理)
復制表結構 fault add 創建 str 可選 double 刪除列 ble 添加字段的SQL語句的寫法: 通用式: alter table [表名] add [字段名] 字段屬性 default 缺省值 default 是可選參數增加字段: alter table [