java连接AD域
import org.springframework.boot.autoconfigure.SpringBootApplication;
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
* @version V3.0
* @date 2014-12-23 下午02:07:26
* @since jdk 1.6,tomcat 6.0
*/
@SpringBootApplication
public class AdDemoApplication {
public static void main(String[] args) {
// SpringApplication.run(AdDemoApplication.class, args);
connect("192.168.250.40", "389", "testad\\qwe", "1qaz@WSX");
}
/**
* 使用java连接AD域
*
* @param host 连接AD域服务器的ip
* @param port AD域服务器的端口
* @param username 用户名
* @param password 密码
* @return void
* @author Herman.Xiong
* @date 2014-12-23 下午02:24:04
*/
public static void connect(String host, String port, String username, String password) {
DirContext ctx = null;
Hashtable<String, String> HashEnv = new Hashtable();
// LDAP访问安全级别(none,simple,strong)
HashEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
//AD的用户名(需要加域名)
HashEnv.put(Context.SECURITY_PRINCIPAL, username);
//AD的密码
HashEnv.put(Context.SECURITY_CREDENTIALS, password);
// LDAP工厂类
HashEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
//连接超时设置为3秒
HashEnv.put("com.sun.jndi.ldap.connect.timeout", "3000");
// 默认端口389
HashEnv.put(Context.PROVIDER_URL, "ldap://" + host + ":" + port);
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();
}
}
}
}
}
最新文章
- 聊一聊PV和并发
- SPSS数据分析—二分类Logistic回归模型
- 《C++primer》v5 第5章 语句 读书笔记 习题答案
- Unity 5.3 安装完没有Android(安卓)或IOS Module(模块)?
- css实现阴影效果(box-shadow)
- JS中的bind方法学习
- Hamilton回路的判定与构造
- 执行mount命令时找不到介质或者mount:no medium found的解决办法
- 2015 Multi-University Training Contest 6 Cake
- HelloX操作系统与中国移动OneNET物联网平台成功完成对接
- apple公司的潮起潮落——浪潮之巅
- iPhone手机VPN设置
- 单片机汇编语言实现DES加密算法
- MVC框架个人浅析
- SVN 右下角各种符号
- weiphp的学习
- ClientURL库-curl_setopt()
- 跨域问题jsonp
- (二) DRF 视图
- js页面加载完后执行(document.onreadystatechange 和 document.readyState)