Required Details

Important Reference: will introduce you to the classes needed for querying Active Directory using Java. Have a look and know more about it.


How to do – Step by Step explaination

For an easy understanding perspective; I will be following line by line approach.  ActiveDirectory  Class file and example of how to use that ActiveDirectory class file in javaprogram. Downloads of these files you will find below.

Step 1

Compose LDAP address and supply following parameters username, password, ldap address as a domain into ActiveDirectory  constructor.

ActiveDirectory activeDirectory = new ActiveDirectory(username, password,
domain);

Step 2

Invoke searchUser method with parameters of searchTerm, choice and searchBase.

NamingEnumeration<SearchResult> result =
activeDirectory.searchUser(searchTerm, choice, “DC=myjeeva,DC=com”);
Step 3

Now you have your search result in result variable.


How it works?

Part 1

ActiveDirectory constructor-

  • It creates properties instance with given values (ldap address, username, password)
  • It initializes the Directory Context
  • It assign the Search Scope and return attribute names
/**

* constructor with parameter for initializing a LDAP context

* 

* @param username a {@link java.lang.String} object - username to establish a LDAP connection

* @param password a {@link java.lang.String} object - password to establish a LDAP connection

* @param domainController a {@link java.lang.String} object - domain controller name for LDAP connection

*/

public ActiveDirectory(String username, String password, String domainController) {

properties = new Properties();

properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");

properties.put(Context.PROVIDER_URL, "LDAP://" + domainController);

properties.put(Context.SECURITY_PRINCIPAL, username + "@" + domainController);

properties.put(Context.SECURITY_CREDENTIALS, password);

// initializing active directory LDAP connection

try {

dirContext = new InitialDirContext(properties);

} catch (NamingException e) {

LOG.severe(e.getMessage());

}

// default domain base for search

domainBase = getDomainBase(domainController);

// initializing search controls

searchCtls = new SearchControls();

searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);

searchCtls.setReturningAttributes(returnAttributes);

}
Part 2

searchUser method utilizes the filter method to construct the active directory query.

/**

* search the Active directory by username/email id for given search base

* 

* @param searchValue a {@link java.lang.String} object - search value used for AD search for eg. username or email

* @param searchBy a {@link java.lang.String} object - scope of search by username or by email id

* @param searchBase a {@link java.lang.String} object - search base value for scope tree for eg. DC=myjeeva,DC=com

* @return search result a {@link javax.naming.NamingEnumeration} object - active directory search result

* @throws NamingException

*/

public NamingEnumeration<SearchResult> searchUser(String searchValue,

String searchBy, String searchBase) throws NamingException {

String filter = getFilter(searchValue, searchBy);

// For eg.: "DC=myjeeva,DC=com";

String base = (null == searchBase) ? domainBase : getDomainBase(searchBase);

return this.dirContext.search(base, filter, this.searchCtls);

}

private String getFilter(String searchValue, String searchBy) {

String filter = this.baseFilter;

if(searchBy.equals("email")) {

filter += "(mail=" + searchValue + "))";

} else if(searchBy.equals("username")) {

filter += "(samaccountname=" + searchValue + "))";

}

return filter;

}

Downloads

ACTIVEDIRECTORY.JAVASAMPLEUSAGEACTIVEDIRECTORY.JAVA


Completion

That’s it, you have learned querying active directory using java and you can download artifacts. Try it out yourself with class provided and experiment it.

For any queries please leave a comment!

原文: http://myjeeva.com/querying-active-directory-using-java.html

相关链接:

1. How To Authenticate Users With Active Directory

2. AzureAD/azure-activedirectory-library-for-java

3. Java JNDI/LDAP: Windows Active Directory Authentication, Organizational Unit, Group & Other Information Access

4. A complete Java example complete with LDAP query code ...

5. Using JAVA code with Active Directory – JefTek.com

用JAVA 查询 Active Directory(AD)的更多相关文章

  1. How to setup Active Directory (AD) In Windows Server 2016

    Windows Server 2016 is the newest server operating system released by Microsoft in October 12th, 201 ...

  2. C#操作Active Directory(AD)详解

    1. LDAP简介 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务.目录服务是一种特殊的数据库系统,其专门 ...

  3. datazen Active Directory AD 配置

    今天苦心经营的datazen 链接AD,文档已经无法吐槽了简单的几句话,根本不够用. 先说一下链接AD 的好处吧, 1 首先免去设置密码的麻烦,因为直接用AD账号的密码. 2 更安全,因为客户可不想自 ...

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

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

  5. TFS 与活动目录AD(Active Directory)的同步机制

    TFS用户管理机制 TFS系统与企业域服务器用户系统(或本地计算机用户系统)高度集成在一起,使用域服务器验证系统用户的账户和密码,从而在企业中实现单一用户,单点登录.也就是说,TFS系统自身并没有用户 ...

  6. AD域的安装(在Windows Server 2003中安装Active Directory)

    在Active Directory中提供了一组服务器作为身份验证服务器或登录服务器,这类服务器被称作域控制器(Domain Controller,简称DC).建立一个AD域的过程实际就是在一台运行Wi ...

  7. Windows Azure Active Directory (2) Windows Azure AD基础

    <Windows Azure Platform 系列文章目录> Windows Azure AD (WAAD)是Windows Azure提供的一个REST风格的服务,为您的云服务提供了身 ...

  8. Windows Azure Active Directory (3) China Azure AD增加新用户

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的China Azure. 本文是对笔者之前的文档:Windows Azure Active ...

  9. Windows Azure Active Directory (4) China Azure AD Self Password Reset

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China. 在开始本章内容之前,请读者熟悉笔者之前写的文档: Windows ...

随机推荐

  1. RazorEngine在非MVC下的使用,以及使用自定义模板

    ---恢复内容开始--- RazorEngine模板引擎大大的帮助了我们简化字符串的拼接与方法的调用,开源之后,现在在简单的web程序,winform程序,甚至控制台程序都可以利用它来完成. 但如何在 ...

  2. Kettle中通过触发器方式实现数据 增量更新

    在使用Kettle进行数据同步的时候, 共有 1.使用时间戳进行数据增量更新 2.使用数据库日志进行数据增量更新 3.使用触发器+快照表 进行数据增量更新 今天要介绍的是第3中方法. 实验的思路是这样 ...

  3. ASP.NET MVC5总结(二)@HTML扩展

    1.@Html.AntiForgeryToken() 用来防止跨站请求伪造(CSRF)攻击的一个措施 2.@Html.ValidationSummary(true) 主要用来 (1). 显示后台 Mo ...

  4. Deep Learning 学习随记(三)Softmax regression

    讲义中的第四章,讲的是Softmax 回归.softmax回归是logistic回归的泛化版,先来回顾下logistic回归. logistic回归: 训练集为{(x(1),y(1)),...,(x( ...

  5. imageWithContentsOfFile读取全路径返回的image为空的解决方法

    下载图片缓存到本地沙盒里,发现用 imageWithContentsOfFile去读取的时候,40%左右的几率会读取为空. 查找资料和文档后找到解决方法 路径:当这次的时候是/var/mobile/C ...

  6. Cogs 1844. [JSOI2008]最大数maxnumber

    [JSOI2008]最大数maxnumber ★★ 输入文件:bzoj_1012.in 输出文件:bzoj_1012.out 简单对比 时间限制:3 s 内存限制:162 MB [题目描述] 现在请求 ...

  7. Core模块其他常用知识点[OpenCV 笔记14]

    Matx 轻量级的Mat,必须在使用前规定好大小,比如一个2x3的float型的Matx,可以声明为Matx23f Vec Vec是Matx的一个派生类,是一个一维的Matx,跟vector很相似.在 ...

  8. 颜色空间转换 cvtColor()[OpenCV 笔记13]

    void cvtColor(InputArray src, OutputArray dst, ) src: 输入图像 dst: 输出图像 code: 颜色空间转换标识符 OpenCV2的CV_前缀宏命 ...

  9. win7下简单FTP服务器搭建

    本文介绍通过win7自带的IIS来搭建一个只能实现基本功能的FTP服务器,第一次装好WIN7后我愣是没整出来,后来查了一下网上资料经过试验后搭建成功,其实原理和步骤与windows前期的版本差不多,主 ...

  10. js判断是否全是相同的字符串

    isSameStr("aa2a") //不都是相同的字符 function isSameStr(str){ var tem=0; for(var i=0;i<str.leng ...