原文地址: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. Javascript中的异步

    在C#,Java中,异步方法,通常是伴随多线程,并发等术语一起出现的,比如C#中的async方法,是运行在一个线程池线程上,并且在异步方法运行完成后,有一个回调函数通知主线程. 那么由于Javascr ...

  2. URAL 1992 CVS

    CVS 题目连接: http://acm.timus.ru/problem.aspx?space=1&num=1992 Description Yoda: Visit I will the c ...

  3. UESTCACM 每周算法讲堂 延迟标记+bfs dfs搜索入门

    http://www.bilibili.com/video/av4163472/ 地址在上面~

  4. bzoj 2428: [HAOI2006]均分数据 随机化

    2428: [HAOI2006]均分数据 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...

  5. 如何判断c语言的变量类型

    变量三要素: 一个变量有三个基本的要素,变量的名称,变量的类型,变量的值.所以int a = 10; 变量名为a,变量的存储类型为int型,变量的值为10. 变量还有一些属性如作用范围和存储类型. 变 ...

  6. 【原】【Git】EGit强制覆盖本地文件

    今天带来的是EGit使用中有时会用到的一个技巧,强制覆盖本地.EGit强制覆盖远端(其实没有这个说法),在另一篇文章中写了http://www.cnblogs.com/guodongdidi/p/48 ...

  7. css选择器:first-child和nth-child 采坑记

    今天想用nth-child来给一个类似于树的目录(bootstrap-nav-tree  一个angularjs插件)设置不同的颜色,结构大致类似于 <ul> <li class=& ...

  8. Jenkins使用jenkins-cli.jar进行远程调用时出现“ERROR: No such job 'test'”或者权限不够等问题解决(Windows)

    网上最提倡的解决办法是用SSH的key进行登录,但是我发觉Linux上非常容易实现,但是Windows压根不知道在哪里设置. 原文:https://issues.jenkins-ci.org/brow ...

  9. oc/object-c/ios哪种遍历NSArray/NSDictionary方式快?测试报告

    做app的时候,总免不了要多次遍历数组或者字典.究竟哪种遍历方式比较快呢?我做了如下测试:首先定义测试用宏: ? 1 2 3 4 5 6 7 8 9 #define MULogTimeinterval ...

  10. BZOJ 1032 JSOI 2007 祖码Zuma 区间DP

    题目大意:依照祖玛的玩法(任意选颜色),给出一段区间.问最少用多少个球可以把全部颜色块都消除. 思路:把输入数据依照连续的块处理.保存成颜色和数量.然后用这个来DP.我们知道,一个单独的块须要两个同样 ...