博客地址:http://www.moonxy.com

关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用

一、前言

先简单简单回顾上一篇博文中关于 AD 域和 LDAP目录访问协议的基本概念。

AD(Active Directory)活动目录,动态的建立整个域模式网络中的对象的数据库或索引,使用的协议为 LDAP,安装了AD 的服务器称为 DC 域控制器,存储整个域的对象的信息并周期性更新,其中的对象分为三大类:资源(如印表机)、服务(如电子邮件)、和用户(即帐户或用户,以及组)。

通常大家都会将 LDAP 与关系数据库相比,认为 LDAP 是另一种的存贮方式,然后在读性能上进行比较。实际上,这种对比的基础是不正确的。LDAP 和关系数据库是两种不同层次的概念,后者是存贮方式(同一层次如网络数据库,对象数据库),前者是存贮模式和访问协议。LDAP 是一个比关系数据库抽象层次更高的存贮概念,与关系数据库的查询语言 SQL 属同一级别。LDAP 最基本的形式是一个连接数据库的标准方式。该数据库为读查询作了优化。因此它可以很快地得到查询结果,不过在其它方面,例如更新,就慢得多。

二、Java 获取 AD 域用户

Java 获取 AD 域用户通常用于单点登录(Single Sign On,SSO)。

package com.moonxy.ad;import java.util.Properties;import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;/*** @Description:获取AD域用户* @author moonxy* @date 2018-05-14*/
public class ADUtils {public static void main(String[] args) {Properties env = new Properties();//使用UPN格式:User@domain或SamAccountName格式:domain\\UserString adminName = "administrator@moonxy.com";String adminPassword = "smartdot&2014";//passwordString ldapURL = "LDAP://192.168.1.103:389";//ip:port
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");env.put(Context.SECURITY_AUTHENTICATION, "simple");//LDAP访问安全级别:"none","simple","strong"env.put(Context.SECURITY_PRINCIPAL, adminName);// AD Userenv.put(Context.SECURITY_CREDENTIALS, adminPassword);// AD Password env.put(Context.PROVIDER_URL, ldapURL);// LDAP工厂类try {LdapContext ctx = new InitialLdapContext(env, null);//搜索控制器SearchControls searchCtls = new SearchControls();//创建搜索控制器
            searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);//LDAP搜索过滤器类,此处只获取AD域用户,所以条件为用户user或者person均可//(&(objectCategory=person)(objectClass=user)(name=*))String searchFilter = "objectClass=user";//AD域节点结构String searchBase = "OU=Java开发组,OU=软件研发部,DC=moonxy,DC=com";String returnedAtts[] = { "url", "employeeID",  "mail","name", "userPrincipalName", "physicalDeliveryOfficeName",  "departmentNumber", "telephoneNumber", "homePhone",  "mobile", "department", "sAMAccountName", "whenChanged"}; // 定制返回属性
            searchCtls.setReturningAttributes(returnedAtts);NamingEnumeration<SearchResult> answer = ctx.search(searchBase, searchFilter,searchCtls);while (answer.hasMoreElements()) {SearchResult sr = (SearchResult) answer.next();System.out.println("<<<::[" + sr.getName()+"]::>>>>");//返回格式一般是CN=xxxx,OU=xxxxAttributes Attrs = sr.getAttributes();//得到符合条件的属性集  if (Attrs != null) {for (NamingEnumeration ne = Attrs.getAll(); ne.hasMore();) {Attribute Attr = (Attribute) ne.next();//得到下一个属性System.out.print(Attr.getID().toString() + ":");//读取属性值for (NamingEnumeration e = Attr.getAll(); e.hasMore();) {String userInfo =  e.next().toString();System.out.print(userInfo);}System.out.println("");}}}ctx.close();}catch (NamingException e) {e.printStackTrace();System.err.println("Problem searching directory: " + e);}}
}

输出的结果如下:

转载于:https://www.cnblogs.com/cnjavahome/p/9038363.html

AD 域服务简介(二)- Java 获取 AD 域用户相关推荐

  1. 通过java获取抖音用户主页信息(2020年9月)

    通过java获取抖音用户主页信息(2020年9月) 环境准备 本篇文章基于sts编辑器,jdk1.8,maven3 项目结构如下图 执行结果如下图 html请求工具类 HttpUtils代码如下 pa ...

  2. AD 域服务简介(一)

    目录 一.前言 1.1 AD 域服务 1.2 AD域对象与属性 1.3 AD 域控制器 DC 1.4 LDAP 1.5 全局编录 一.前言 1.1 AD 域服务 什么是目录(directory)呢? ...

  3. pb通过对象名称调用对象_域服务是命名空间,利用AD DS,通过对象名称可找到相关所有信息...

    今天介绍域服务是一个命名空间,Windows Server 2012 R2如何启动Netlogon服务.小伙伴们可能不一定了解,命名空间(Namespace)是一个界定好的区域(Bounded Are ...

  4. java获取抖音用户信息,获取用户订阅抖音账号列表

    ## 接口定义 ~~~[api] get:http://open.koldata.net/douyin/subscribe/account int:page=1#页码:默认值为1 int:page_s ...

  5. Windows 08 R2_创建AD DS域服务(图文详解)

    目录 目录 Active Directory概念 创建第一个AD域控制器 搭建DNS服务器 使用Windows窗口程序创建AD域控制器 AD与LDAP的关系 使用Powershell来创建ADDS域控 ...

  6. ad域需要自建dns服务器吗,创建AD DS域服务(图文详解)

    Active Directory概念 AD(活动目录):是一种组织资源信息的方法,目录的意义在于我们可以通过标题或者说搜索条件来简单而有效率的在大量数据中查找匹配的信息.支撑这种信息检索的技术就是LD ...

  7. VWware-安装AD域服务

    AD域控就是基于轻型目录访问协议将企业网络中的资源(包括用户.计算机.服务器.数据库.共享文件.共享打印机等)合理.安全.有效的管理起来.通俗来说就是:解决了单点登录,简化了身份认证,完成了不同用户资 ...

  8. 根据当前登录域账号 获取AD用户姓名和所在OU目录

    根据当前登录域账号 获取AD用户姓名和所在OU目录 #region 根据当前登录域账号 获取AD用户姓名和所在OU目录/// <summary>/// 根据当前登录域账号 获取AD用户姓名 ...

  9. 删除域控中的一个服务器,删除 Active Directory 域服务

    在域控制器上运行 Dcpromo.exe 时,Active Directory 域服务安装向导检测到已在服务器上安装了 Active Directory 域服务 (AD DS).然后,该向导将启动并提 ...

最新文章

  1. cassandra java driver
  2. ETSI GS MEC 013,UE 位置 API
  3. 一寸、两寸证件照photoshop批处理动作
  4. Java---定义一个圆(Circle)类表示三维空间中的圆(两个成员变量:圆心Point类、半径)
  5. 宏定义define的使用
  6. python的tkinter编写计算器_Python+Tkinter 实现计算器功能
  7. 添加java环境变量_【安装 JDK】 配置环境变量
  8. linux中断的上半部和下半部
  9. liferay 学习网站 作者为 胡启稳
  10. 机器学习(三)——朴素贝叶斯方法、SVM(1)
  11. redis的java客户端名称_java里常用的redis客户端简介
  12. SQL数据库查询基础(主讲MySQL,必要时补充了SQLServer、Access兼容性说明)
  13. 创建一个简单的ArcGIS Server ASP.NET网页
  14. html5模板 制作,优秀的H5作品是如何炼成的?模板制作详解!
  15. java怎么写自定义布局_java-Android设置自定义首选项布局
  16. python3安装M2Crypto模块
  17. wamp mysql 密码_WAMP中的mysql设置密码
  18. Xcelsius数据源概述
  19. 微信公众平台深度开发JAVA版
  20. python:defaultdict 对象

热门文章

  1. 谷歌的网页排序算法(PageRank Algorithm)
  2. 罗森伯格成功布线中国海关博物馆
  3. 所谓的中间代码(ES5 的 “JSIL”)
  4. 病毒式营销案例:多芬让“病毒”的诱惑自发传递
  5. EXCEL_CLASS
  6. 手动排除fbiytty和vcxlcph病毒的干扰
  7. what to do next?
  8. cv and cover letter part 1
  9. Contextualization
  10. U3D assetbundle打包