使用java连接AD域,验证账号password是否正确
web项目中有时候客户要求我们使用ad域进行身份确认,不再另外做一套用户管理系统。事实上客户就是仅仅要一套账号能够訪问全部的OA。CRM等办公系统。
这就是第三方验证。一般有AD域,Ldap,Radius,邮件server等。最经常使用的要数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域server的ip
* @param post AD域server的端口
* @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共同学习!
使用java连接AD域,验证账号password是否正确的更多相关文章
- 使用java连接AD域,验证账号密码是否正确
eb项目中有时候客户要求我们使用ad域进行身份确认,不再另外做一套用户管理系统.其实客户就是只要一套账号可以访问所有的OA,CRM等办公系统.这就是第三方验证.一般有AD域,Ldap,Radius,邮 ...
- java连接AD域
import org.springframework.boot.autoconfigure.SpringBootApplication; import java.util.Hashtable; imp ...
- java修改AD域用户密码使用SSL连接方式
正常情况下,JAVA修改AD域用户属性,只能修改一些普通属性, 如果要修改AD域用户密码和userAccountControl属性就得使用SSL连接的方式修改, SSL连接的方式需要操作以下步骤: 1 ...
- java ssl 连接AD域
1.安装证书服务和IIS服务,不需要启动asp.(其会在c盘生成一个crt文件)2.获取crt证书文件 windows 2003:文件位于系统盘根目录 windows 2008: 文件位于C:\Win ...
- AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作
博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...
- AD 域服务简介(二)- Java 获取 AD 域用户
博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 一.前言 先简单简单回顾上一篇 ...
- java访问ad域
1.活动目录(AD) Active Directory 是用于 Windows Server 的目录服务.它存储着网络上各种对象的有关信息,并使该信息易于管理员和用户查找及使用.Active Dire ...
- NETCore调用AD域验证
一.添加引用 System.DirectoryServices System.DirectoryServices.AccountManagement 二.验证代码 声明域 string domainN ...
- java 连接带 kerberos 验证的 phoenix
唉,网上的资料比较少,找了好久,压根不知道如入告诉 phoenix 客户端来使用 kerberos 啊.. 然后就想到了,这东西开源的应该有相关的单元测试吧..啊哈哈哈哈哈哈,果然 https://g ...
随机推荐
- hdu 2304
题意: 插座插空问题 水题.....只要知道最后一个不需要插即可.... 直接贴代码.. AC代码: #include <iostream> using namespace std; in ...
- iOS UI_APPEARANCE_SELECTOR
iOS后属性带UI_APPEARANCE_SELECTOR 可以统一设置全局作用 例如: 1>开关控件 @property(nullable, nonatomic, strong) UIColo ...
- UIBezierPath和CAShapeLayer的关系
CAShapeLayer是基于贝塞尔曲线而存在的, 如果没有贝塞尔曲线提供路径来画出图形, CAShapeLayer就没有存在的意义, CAShapeLayer可以使得不用在drawRect:方法中实 ...
- 【转】Windows按键消息—虚拟键码
来源:http://c.biancheng.net/cpp/html/1253.html 虚拟键码保存在WM_KEYDOWN.WM_KEYUP.WM_SYSKEYDOWN和WM_SYSKEYUP消息的 ...
- java日期处理总结(二)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAzUAAAG1CAIAAABPoU1KAAAgAElEQVR4nOy9e1xU1d747znP9/V9nu
- C++拾遗(五)语句相关
前缀格式与后缀格式 对于表达式:后缀如 i++ 表达式的值仍是 i,在遇到下一个顺序点后再将 i 加1.前缀 ++i 表达式的值就是(i+1),先计算表达式的值,不需要等待 顺序点. 对于类:前缀函数 ...
- [置顶] 让你的Android应用与外部元素互动起来
传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229 一个Android应用程序通常有几个activities.每个act显示一个用户接口允 ...
- Gradle一分钟实现Spring-MVC
前提: 1,已安装JDK 2, 有Intellij IDEA 3, 已安装Gradle 一分钟实现步骤: 1,mkdir Spring-MVC;cd Spring-MVC2,gradle init3, ...
- Socket 接收本地短连接并转发为长连接 多线程
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io. ...
- JQuery 获取验证码倒计时
HTML代码: <button id="btn">点击获取验证码</button> Jquery:代码: $(document).ready(functio ...