原文地址:http://hi.baidu.com/js2007/item/24efbb0fae1c9b90a3df432a

package LdapTest;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.AuthenticationException;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.Control;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
public class AuthenticationTest { private String BASE_DN ="dc=statestreet,dc=com";
// private DirContext ctx = null;
private LdapContext ctx = null;
private Hashtable env = null;
private Control[] connCtls = null; private void LdapConnect(){
env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=Manager,dc=statestreet,dc=com");
env.put(Context.SECURITY_CREDENTIALS, "****"); //自己填入 try{
ctx = new InitialLdapContext(env,connCtls);
// ctx = new InitialDirContext(env);
System.out.println("Login Ldap Server Successful...");
}catch(AuthenticationException e){
System.out.println("Login Ldap Server Failed...");
e.printStackTrace();
}catch(Exception e){
System.out.println("Login Ldap Server Wrong...\n "+e.toString());
}
} private String getUserDN(String userid){
String userDN="";
try{
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration en = ctx.search("","uid="+userid,constraints);
if(en == null){
System.out.println("Have NO such user!");
}
if(!en.hasMoreElements()){
System.out.println("Have NO such user!");
}
while (en != null && en.hasMoreElements()){
Object obj = en.nextElement();
if(obj instanceof SearchResult){
SearchResult si = (SearchResult) obj;
userDN += si.getName();
userDN += "," + BASE_DN;
}
else{
System.out.println(obj);
}
}
}catch(Exception e){
System.out.println("Exception in search user DN : "+e.toString());
}
return userDN;
} public boolean Authenricate(String ID,String pwd){
LdapConnect();
boolean valide = false;
String userDN = getUserDN(ID); if(userDN=="")
return valide; try {
ctx.addToEnvironment(Context.SECURITY_PRINCIPAL,userDN);
ctx.addToEnvironment(Context.SECURITY_CREDENTIALS,pwd);
ctx.reconnect(connCtls);
System.out.println(userDN + " is authenticated! ");
valide = true;
}catch (AuthenticationException e) {
System.out.println(userDN + " is NOT authenticated! ");
valide = false;
}catch (NamingException e) {
System.out.println(userDN + " is NOT authenticated! ");
valide = false;
}
LdapDisconnect();
return valide;
} private void LdapDisconnect(){
if (ctx != null) {
try {
ctx.close();
}
catch (NamingException e) {
e.printStackTrace();
}
}
}
}

Ldap登陆AD(Active Directory)进行认证的Java示例的更多相关文章

  1. C# AD(Active Directory)域信息同步,组织单位、用户等信息查询

    示例准备 打开上一篇文章配置好的AD域控制器 开始菜单-->管理工具-->Active Directory 用户和计算机 新建组织单位和用户   新建层次关系如下: 知识了解 我们要用C# ...

  2. cmd 执行Dcpromo错误:在该 SKU 上不支持 Active Directory 域服务安装向导,Windows Server 2008 R2 Enterprise 配置AD(Active Directory)域控制器

    今天,要安装AD域控制器,运行dcpromo结果提示:在该 SKU 上不支持 Active Directory 域服务安装向导. 以前弄的时候直接就通过了,这次咋回事?终于搞了大半天搞定了. 主要原因 ...

  3. PHP LDAP class for Active Directory

    A class for PHP to talk to Active Directory through LDAP.http://sourceforge.net/projects/adldap/

  4. 【Azure Developer】使用 adal4j(Azure Active Directory authentication library for Java)如何来获取Token呢

    问题描述 使用中国区的Azure,在获取Token时候,参考了 adal4j的代码,在官方文档中,发现了如下的片段代码: ExecutorService service = Executors.new ...

  5. 配置Nginx使用Active Directory 做认证

    配置Nginx使用AD做认证 nginx.conf 配置 http { ldap_server ldap { url ldap://xxx:389/DC=test,DC=com?sAMAccountN ...

  6. Windows Server 2008 R2 配置AD(Active Directory)域控制器

    实施过程: 一.安装Windows Server2008 R2操作系统 (过程略) 二.安装域控制器 1. 修改电脑名称 2.修改电脑DNS 三.配置AD 1.在"服务器管理器"- ...

  7. Windows Server 2008 R2 配置AD(Active Directory)域控制器 -zhai zi wangluo

    http://files.cnblogs.com/zhongweiv/Windows_Server_2008_R2_%E9%85%8D%E7%BD%AEActive_Directory%E5%9F%9 ...

  8. Java使用LdAP获取AD域用户

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

  9. AD 域服务简介(一)- 基于 LDAP 的 AD 域服务器搭建及其使用(转)

    一.前言 1.1 AD 域服务 什么是目录(directory)呢? 日常生活中使用的电话薄内记录着亲朋好友的姓名.电话与地址等数据,它就是 telephone directory(电话目录):计算机 ...

随机推荐

  1. Nginx -- nginx.conf 配置文件详讲

    Nginx服务器配置,nginx.conf文件代码详讲,结合不同楼主的博文得到: #关掉访问日志可以优化服务器 #定义Nginx运行的用户和用户组 #user nobody; #nginx进程数 #如 ...

  2. April Fools Day Contest 2016 G. You're a Professional

    G. You're a Professional 题目连接: http://www.codeforces.com/contest/656/problem/G Description A simple ...

  3. 函数中的 arguments 对象

    JavaScript函数具有像数组一样的对象,这些对象称为arguments,与传递给函数的参数相对应.传递给JavaScript函数的所有参数都可以使用arguments对象来引用. 现在我们开始学 ...

  4. <摘录>CentOS怎么查看某个命令的源代码

    安装yumdownloader工具: # yum install yum-utils 设置源: [base-src] name=CentOS-5.4 - Base src - baseurl=http ...

  5. Shell升级,/bin/bash版本号4.1到4.3

    bash环境变量存在随意代码运行漏洞:"通过CGI请求方式能够导致远程代码运行,进而导致server被入侵.危害严重.且官方发布补丁也被绕过", [漏洞影响]: 1)bash受影响 ...

  6. SLF4J和Logback日志框架详解

    SLF4J和Logback日志框架详解 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 本文讲述SLF4J和Logback日志框架.   SLF4J是一套 ...

  7. javascript函数中的匿名函数

    一般写函数,我们会这样调用: function add(x, y) { return x + y; } alert(add(2, 3)); 或者这样: var add = function(x, y) ...

  8. Ubuntu删除文件夹的命令

    1. 删除文件夹的内容包括文件夹: rm -rf 文件夹的名字       (-r 是 循环的意思, f是不询问的意思) 2 .删除文件夹的内容不包括文件夹: rm -rf  文件夹的名字/*     ...

  9. 【转载】Redis Sentinel 高可用服务架构搭建

    作者:田园里的蟋蟀 出处:http://www.cnblogs.com/xishuai/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 阅读 ...

  10. Java:Maven依赖包下载

    Maven依赖的包可以到Maven的中心仓库 http://search.maven.org/#browse 进行查找下载 例如需要MyBatis的依赖包,搜索mybatis,然后选择正确的路径,复制 ...