JAVA 操作 LDAP AD域修改密碼報錯及解決問題記錄 simple bind failed:IP:PORT


第一次接觸ad域操作,搞了一天。終於完成。感謝以下博客主的知識分享。

主要遇到的問題:

simple bind failed:IP:PORT

connect  reset 等。 

 主要解決指導為:

1. 修改AD的 init 方法初始化 InitialLdapContext 時使用的賬號密碼,必須是AD域的管理員賬號密碼。

     如果不是管理員賬號,會報53 的錯。

2. JAVA 修改AD密碼必須是要用證書的。

3. 證書中的【頒發給/ 使用者】 必須是 AD域服務器那台機器的域名。如下第3點博客內容。

  如果這名不對,即使有證書,也是連不上ad服務器的, 報 connect reset 的錯。或者其他錯誤

主要參考:

1. 測試登陸認證。

Java使用AD域認證用戶_醬油能碼丁-CSDN博客

https://blog.csdn.net/martinwangjun/article/details/79729749?utm_source=blogxgwz2

2. 測試修改AD密碼。

記一次java實現修改windows AD域的密碼_lx318的博客-CSDN博客

https://blog.csdn.net/lx318/article/details/90199569

AD域證書申請,導入Java密鑰庫,實現ldap修改AD用戶密碼_寒沨的博客-CSDN博客

https://blog.csdn.net/hc1017/article/details/81293323

3. Java采用SSL連接AD域連接出錯問題simple bind failed:IP:PORT解決方案

https://blog.csdn.net/hct368/article/details/97247258

 

 

4. 報錯信息參考: 

private static String getERR(Exception e) {
/*
*
* 根據ldap返回碼判斷錯誤原因並返回
*
*/

if (e.toString().indexOf("LDAP: error code") > 0) {

// 得到ldap返回的錯誤嗎

String errorMsg = e.toString();

int startNum = errorMsg.toString().indexOf("LDAP: error code") + 17;

errorMsg = errorMsg.substring(startNum, startNum + 19);

int endNum = errorMsg.toString().indexOf(" - ");

errorMsg = errorMsg.substring(0, endNum);

if ("49".equals(errorMsg)) {

errorMsg = "域控管理員賬戶/密碼錯誤";

} else if ("32".equals(errorMsg) || "34".equals(errorMsg)) {

errorMsg = "域內賬戶錯誤";

} else if ("10".equals(errorMsg)) {

errorMsg = "dc錯誤";

} else {

errorMsg = "修改失敗,錯誤嗎:" + errorMsg;

e.printStackTrace();

}

System.out.println("Problem resetting password(ldap):" + errorMsg);

return errorMsg;

} else {

if (e.toString().indexOf(

"algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext") > 0) {

System.out.println("Problem resetting password(ldap):" + "證書無效/證書密碼錯誤");

return "修改失敗,證書無效/證書密碼錯誤";

}

if (e.toString().indexOf(

"the trustAnchors parameter must be non-empty") > 0) {

System.out.println("Problem resetting password(ldap):" + "證書不存在");

return "修改失敗,證書不存在";

}

e.printStackTrace();

return "修改失敗!";

}
}

5. 

LDAP 中DN、CN、DC的含義

轉自: https://blog.csdn.net/a118170653/article/details/43449331

 

很多人雖然會使用dsadd等命令添加用戶,但是dsadd的命令說明里面並沒有涉及到dc,cn,ou的含義,很多人都不明白,這里是微軟的技術支持人 員的回信,希望對大家有幫助。 

CN, OU, DC 都是 LDAP 連接服務器的端字符串中的區別名稱(DN, distinguished   name) 

LDAP連接服務器的連接字串格式為:ldap://servername/DN   

其中DN有三個屬性,分別是CN,OU,DC   

LDAP是一種通訊協議,如同HTTP是一種協議一樣的! 

在 LDAP 目錄中,

  • DC (Domain Component)
  • CN (Common Name)
  • OU (Organizational Unit)



LDAP 目錄類似於文件系統目錄。 
下列目錄: 
DC=redmond,DC=wa,DC=microsoft,DC=com       

如果我們類比文件系統的話,可被看作如下文件路徑:    
Com/Microsoft/Wa/Redmond   

例如:CN=test,OU=developer,DC=domainname,DC=com 
在上面的代碼中 cn=test 可能代表一個用戶名,ou=developer 代表一個 active directory 中的組織單位。這句話的含義可能就是說明 test 這個對象處在domainname.com 域的 developer 組織單元中


免責聲明!

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



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