文档章节

使用java连接AD域,验证账号密码是否正确

Cobbage
 Cobbage
发布于 2018/11/15 18:02
字数 325
阅读 35
收藏 0

转载 使用java连接AD域,验证账号密码是否正确

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("192.168.0.1", "389", "herman@herman.com", "123456");
	}
}

© 著作权归作者所有

共有 人打赏支持
上一篇: memcached
Cobbage

Cobbage

粉丝 51
博文 146
码字总数 73307
作品 1
闵行
QA/测试工程师
私信 提问
如何实现用JAVA开发的网站登录类程序同域控结合进行验证登录

JAVA写的员工通讯录,目前使用输入用户名和密码登录进行通讯录的查询的权限控制的,现在希望能够通过公司的域控来实现员工登录查询,这样使用公司域账号的员工在使用通讯录的时候就不需要再输...

1_1
2012/09/05
610
0
用java进行LDAP用户登陆(用户认证)及修改密码

一、用户认证 public String execute(){Hashtable env = new Hashtable();String LDAP_URL = "ldap://8.8.8.8:389"; // LDAP访问地址env.put(Context.INITIALCONTEXTFACTORY,"com.sun.jndi.l......

hello_bear
2015/08/19
0
0
需要整合自己的java项目实现第三方登陆

需要实现这样的第三方。相当于论坛的登陆页面出现一个自己的第三方登陆按钮。然后点击跳转到自己的java项目的登陆验证页面。自己java项目验证用户and密码成功后。重定向到论坛的首页。如果没...

小帅帅丶
2014/06/23
1K
1
使用 Apache Shiro 为 web 应用程序进行用户身份验证

简介: Shiro 是一个 Apache Incubator 项目,旨在简化身份验证和授权。在本文中,了解 Apache Shiro 并通过示例来在一个 Groovy web 应用程序中尝试使用 Shiro 进行身份验证和授权。 Apache...

IBMdW
2011/08/22
2.3K
0
起点R3使用JAVA获取Domino数据(下篇)

在上篇中介绍了从JAVA中获取Domino数据库中的文档信息,但有一个缺点,就是必须要有本地Notes,即限制了只能在Windows下使用,在有些情况下,可能需要在其他操作系统中通过JAVA获取Domino数据...

5622928
2011/03/16
531
0

没有更多内容

加载失败,请刷新页面

加载更多

matlab-自控原理 step、impulse 阶跃、脉冲响应 已知传递函数

  matlab : R2018a 64bit     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   已知传递函数,求其阶跃响应......

志成就
24分钟前
1
0
JDBC事务操作

事务特点:ACID 原子性(Atomicity):事务管理的系列操作必须全部完成,否则就算失败(类似操作系统的PV原语、信号量) 一致性(Consistency):同一个事务只要起始条件一致最终执行的结果一致 隔...

ZeroneLove
27分钟前
0
0
【scala】3.数组相关操作

简介 在本章中,我们将会学到如何在scala中操作数组。 1、定长数组 // 初始化长度为10的定长数组,每一个元素的值为0val nums = new Array[Int](10)// nums: Array[Int] = Array(0, 0, 0, ...

Areya
27分钟前
1
0
教你零基础如何快速入门大数据技巧

现在是大数据时代,很多人都想要学习大数据,因为不管是就业前景还是薪资都非常的不错,不少人纷纷从其他行业转型到大数据行业,那么零基础的人也想要学习大数据怎么办呢?下面一起探讨下零基...

董黎明
36分钟前
1
0
Nginx 配置 root目录、虚拟目录alias

Nginx是通过 alias 设置虚拟目录,在Nginx的配置中,alias目录和root目录是有区别的。 alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的; root指定...

Yue_Chen
53分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部