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

原创 2015年07月07日 17:44:50

web项目中有时候客户要求我们使用ad域进行身份确认,不再另外做一套用户管理系统。其实客户就是只要一套账号可以访问所有的OA,CRM等办公系统。
这就是第三方验证。一般有AD域,Ldap,Radius,邮件服务器等。最常用的要数AD域了。因为window系统在国内占据了大量的江山。做起来也很方便。
我这篇文章就是写,如何用java去实现AD域的身份验证。好了,直接看代码吧:

import java.util.Hashtable;

import javax.naming.AuthenticationException;
import javax.naming.Context;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
 
/**
 * 使用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;
    	LdapContext 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 InitialLdapContext(HashEnv, null);//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("xxxxx.com", "389", "yechunbao@xxxx.com", "******");
    }
}


 

使用JAVA控制AD域进行基本的操作详解

前段时间,我接到一个任务:使用JAVA控制AD域进行基本的操作。经几天摸索也看来多位博友的代码,现在摸索出了一套详细的Java操控AD域的方法。废话不多说,现进入正题》》》 一、安装域控服务器 什么是...

Java使用LdAP获取AD域用户

随着我们的习大大上台后,国家在网络信息安全方面就有了很明显的改变!所以现在好多做网络信息安全产品的公司和需要网络信息安全的公司都会提到用AD域服务器来验证,这里就简单的研究了一下! 先简单的讲讲AD域...

C# 使用AD(Active Directory)验证内网用户名密码

C# 使用AD(Active Directory)验证内网用户名密码

LDAP对用户名,密码进行域验证

package com.test; import java.util.Hashtable; import javax.naming.AuthenticationException; impor...

AD域登录过程详解

您现在的位置:首页 > 嘉为原创 > 系统技术 > 详情 AD域登录过程详解 赵海兵 IT咨询顾问   网络及系统技术工程师、IT系统服务工程师、微...

java 域服务器 验证 到与服务器端用域用户进行身份验证:

try {               UniAddress dc = UniAddress.getByName("192.168.10.229");               jcifs.sm...

Java实现AD域登录认证

web项目中有时候客户要求我们使用ad域进行身份确认,不再另外做一套用户管理系统。其实客户就是只要一套账号可以访问所有的OA,CRM等办公系统。 这就是第三方验证。一般有AD域,Ldap,Radius...
  • Pnoter
  • Pnoter
  • 2016年08月04日 09:05
  • 8139

JAVA中如何集成AD域用户认证

最近在一个大项目中碰到有人需要在JAVA中如何集成AD域用户认证,这个问题从纯粹的技术角度来讲还真是不难,大不了自己将NTLM或者Kerberos的协议实现一遍,终归可以将此事搞定,不过世界上汽车轮子...

JAVA 验证AD域名登陆

/** * 使用java连接AD域 * @date 2015-1-26 * @throws 异常说明 * @param host 连接AD域服务器的IP ...

Javaweb网cors跨域ajax数据交互

1、通过Maven引用cors-filter、java-property-utils二个jar包,修改pom.xml文件,加入下面内容 com.thetransactioncomp...
  • nnsword
  • nnsword
  • 2016年12月28日 09:29
  • 418
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用java连接AD域,验证账号密码是否正确
举报原因:
原因补充:

(最多只允许输入30个字)