使用java連線AD域,驗證賬號密碼是否正確
web專案中有時候客戶要求我們使用ad域進行身份確認,不再另外做一套使用者管理系統。其實客戶就是隻要一套賬號可以訪問所有的OA,CRM等辦公系統。
這就是第三方驗證。一般有AD域,Ldap,Radius,郵件伺服器等。最常用的要數AD域了。因為window系統在國內佔據了大量的江山。做起來也很方便。
我這篇文章就是寫,如何用java去實現AD域的身份驗證。好了,直接看程式碼吧:
這就是第三方驗證。一般有AD域,Ldap,Radius,郵件伺服器等。最常用的要數AD域了。因為window系統在國內佔據了大量的江山。做起來也很方便。
我這篇文章就是寫,如何用java去實現AD域的身份驗證。好了,直接看程式碼吧:
package com.test;
import java.util.Hashtable;
import javax.naming.AuthenticationException;
import javax.naming.Context;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
/**
* 使用java連線AD域,驗證賬號密碼是否正確
* @author Herman.Xiong
* @date 2014-12-23 下午02:07:26
* @version V3.0
* @since jdk 1.6,tomcat 6.0
*/
public class AdTest {
/**
* 使用java連線AD域
* @author Herman.Xiong
* @date 2014-12-23 下午02:24:04
* @return void
* @throws 異常說明
* @param host 連線AD域伺服器的ip
* @param post AD域伺服器的埠
* @param username 使用者名稱
* @param password 密碼
*/
public static void connect(String host,String post,String username,String password) {
DirContext ctx=null;
Hashtable<String,String> HashEnv = new Hashtable<String,String>();
HashEnv.put(Context.SECURITY_AUTHENTICATION, "simple"); // LDAP訪問安全級別(none,simple,strong)
HashEnv.put(Context.SECURITY_PRINCIPAL, username); //AD的使用者名稱
HashEnv.put(Context.SECURITY_CREDENTIALS, password); //AD的密碼
HashEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory"); // LDAP工廠類
HashEnv.put("com.sun.jndi.ldap.connect.timeout", "3000");//連線超時設定為3秒
HashEnv.put(Context.PROVIDER_URL, "ldap://" + host + ":" + post);// 預設埠389
try {
ctx = new InitialDirContext(HashEnv);// 初始化上下文
System.out.println("身份驗證成功!");
} catch (AuthenticationException e) {
System.out.println("身份驗證失敗!");
e.printStackTrace();
} catch (javax.naming.CommunicationException e) {
System.out.println("AD域連線失敗!");
e.printStackTrace();
} catch (Exception e) {
System.out.println("身份驗證未知異常!");
e.printStackTrace();
} finally{
if(null!=ctx){
try {
ctx.close();
ctx=null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
AdTest.connect("10.10.2.116", "389", "herman@herman.com", "123456");
}
}
程式碼到此結束了,看看執行效果吧:
歡迎大家關注我的部落格!如有疑問,請加QQ群:135430763共同學習!
相關文章
- 賬戶、密碼格式···正則驗證密碼
- 檢測域賬號是否禁用、密碼是否永不過期密碼
- jQuery Validate驗證確認密碼是否相同jQuery密碼
- js檢查身份證號是否正確JS
- squid 反向代理且需要賬號、密碼驗證UI密碼
- JQuery表單驗證(包括:使用者名稱,手機號,密碼,確認密碼,驗證碼60s)jQuery密碼
- swift 郵箱、密碼、手機號、身份證驗證正則Swift密碼
- 使用Json.NET驗證json字串是否格式正確JSON字串
- mongodb連線資料庫帶賬號密碼的需要在java中新增MongoDB資料庫密碼Java
- 精確驗證身份證號碼程式碼
- JS驗證18位身份證號的正確性JS
- JS驗證銀行卡號的正確性JS
- 使用賬號密碼來操作github? NO!密碼Github
- 萬能賬號密碼使用min密碼
- Java正規表示式——驗證手機號和電話號碼Java
- JavaScript驗證使用者名稱密碼是否為空JavaScript密碼
- win10遠端桌面連線,使用正確的使用者名稱和密碼仍然不能成功連線Win10密碼
- 強密碼驗證正規表示式密碼
- vue.js帳號,密碼,郵箱和移動手機號碼正則驗證Vue.js密碼
- Javascript使用正則驗證身份證號(簡單)JavaScript
- js 驗證使用者名稱和密碼是否為空JS密碼
- 請寫一個函式驗證電子郵件的格式是否正確(要求使用正則)函式
- QQ號碼驗證正規表示式程式碼
- Xamarin Anroid開發教程之驗證環境配置是否正確
- js正則驗證身份證號JS
- iOS 中使用正規表示式判斷身份證格式及銀行卡號格式是否正確(推薦)iOS
- 加鹽密碼雜湊:如何正確使用密碼
- js中使用正則驗證手機號JS
- 登入判斷使用者名稱和密碼是否正確的程式碼(連結和讀取資料庫)密碼資料庫
- 精確驗證身份證號碼合法性程式碼例項
- 1.6.5.2. 通過密碼檔案驗證連線資料庫密碼資料庫
- 域賬戶密碼過期密碼
- js驗證是否是正整數程式碼例項JS
- 賬號密碼登入介面密碼
- 使用JAVA進行ad域身份驗證常用屬性詳解Java
- adsl上網賬號及口令在哪裡看 adsl寬頻賬號密碼怎麼查詢密碼
- Homestead 自帶 MySQL 的 預設賬號與密碼MySql密碼
- 如何利用DTM預覽功能來驗證新版本的配置是否正確?