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

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

LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址被使用,不过根据组织者的需要,它可以做得更加强大。
LDAP其实是一个电话簿,类似于我们所使用诸如NIS(Network Information Service)、DNS (Domain Name Service)等网络目录,也类似于你在花园中所看到的树木。

不少LDAP开发人员喜欢把LDAP与关系数据库相比,认为是另一种的存贮方式,然后在读性能上进行比较。实际上,这种对比的基础是错误的。LDAP和关系数据库是两种不同层次的概念,后者是存贮方式(同一层次如网络数据库,对象数据库),前者是存贮模式和访问协议。LDAP是一个比关系数据库抽象层次更高的存贮概念,与关系数据库的查询语言SQL属同一级别。LDAP最基本的形式是一个连接数据库的标准方式。该数据库为读查询作了优化。因此它可以很快地得到查询结果,不过在其它方面,例如更新,就慢得多。AD域和LdAP目录访问协议就介绍到这里!下面来看看简单的demo吧!

  1. /**
  2. * @Description:
  3. *
  4. * @Title: LdAPTest.java
  5. * @Package com.joyce.itext.main
  6. * @Copyright: Copyright (c) 2014
  7. *
  8. * @author Comsys-LZP
  9. * @date 2014-8-7 上午10:20:22
  10. * @version V2.0
  11. */
  12. package com.joyce.itext.main;
  13. import java.util.Properties;
  14. import javax.naming.Context;
  15. import javax.naming.NamingEnumeration;
  16. import javax.naming.NamingException;
  17. import javax.naming.directory.SearchControls;
  18. import javax.naming.directory.SearchResult;
  19. import javax.naming.ldap.InitialLdapContext;
  20. import javax.naming.ldap.LdapContext;
  21. /**
  22. * @Description:拉取AD域账户
  23. *
  24. * @ClassName: LdAPTest
  25. * @Copyright: Copyright (c) 2014
  26. *
  27. * @author Comsys-LZP
  28. * @date 2014-8-7 上午10:20:22
  29. * @version V2.0
  30. */
  31. public class LdAPTest {
  32. public static void main(String[] args) {
  33. Properties env = new Properties();
  34. String adminName = "administrator@2003.com";//username@domain
  35. String adminPassword = "admin";//password
  36. String ldapURL = "LDAP://10.10.2.153:389";//ip:port
  37. env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
  38. env.put(Context.SECURITY_AUTHENTICATION, "simple");//"none","simple","strong"
  39. env.put(Context.SECURITY_PRINCIPAL, adminName);
  40. env.put(Context.SECURITY_CREDENTIALS, adminPassword);
  41. env.put(Context.PROVIDER_URL, ldapURL);
  42. try {
  43. LdapContext ctx = new InitialLdapContext(env, null);
  44. SearchControls searchCtls = new SearchControls();
  45. searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
  46. String searchFilter = "(&(objectCategory=person)(objectClass=user)(name=*))";
  47. String searchBase = "DC=2003,DC=com";
  48. String returnedAtts[] = {"memberOf"};
  49. searchCtls.setReturningAttributes(returnedAtts);
  50. NamingEnumeration<SearchResult> answer = ctx.search(searchBase, searchFilter,searchCtls);
  51. while (answer.hasMoreElements()) {
  52. SearchResult sr = (SearchResult) answer.next();
  53. System.out.println("<<<::[" + sr.getName()+"]::>>>>");
  54. }
  55. ctx.close();
  56. }catch (NamingException e) {
  57. e.printStackTrace();
  58. System.err.println("Problem searching directory: " + e);
  59. }
  60. }
  61. }

以上就是从AD域上拉取域账号!当然现在Java还有许多其他的jar也能操作AD域,这里不就不多介绍了,有兴趣的同伴可以去百度、谷歌!最后给大伙儿看看效果图:

还想多说一句,其实Java原生态的API老好了,所以能用原生态的最好,因为别人提供的jar包如果没有处理好的话,还不如原生态的呢!感谢大家的关注

AD域和LDAP协议的更多相关文章

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

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

  2. GitBlit集成AD域LDAP

    GitBlit的配置文件: gitlblit安装目录下的 /data/gitblit.properties   ,用记事本或其他编译器打开即可. 集成AD域的LDAP操作步骤 打开配置文件,添加以下内 ...

  3. AD 域服务简介(二)- Java 获取 AD 域用户

    博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 一.前言 先简单简单回顾上一篇 ...

  4. JAVA 通过LDAP获取AD域用户及组织信息

    因为工作需求近期做过一个从客户AD域获取数据实现单点登录的功能,在此整理分享. 前提:用户可能有很多系统的情况下,为了方便账号的统一管理使用AD域验证登录,所以不需要我们的系统登录,就需要获取用户的A ...

  5. JAVA使用Ldap操作AD域

    项目上遇到的需要在集成 操作域用户的信息的功能,第一次接触ad域,因为不了解而且网上其他介绍不明确,比较费时,这里记录下. 说明: (1). 特别注意:Java操作查询域用户信息获取到的数据和域管理员 ...

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

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

  7. 实验记录贴 —— 账号同步实验 RTX 和 LDAP(AD域)

    目前,公司有多个系统,RTX,邮箱(MD),OA,NC. 这些系统之间,如果要实现单点登录的话,账户肯定需要同步,或者某一种映射机制. 如果所有数据都和中央账号数据库(LDAP,这里是AD域)看齐,那 ...

  8. springboot整合微软的ad域,采用ldap的api来整合,实现用户登录验证、

    流程: 1.用户调登录接口,传用户名和密码2.用户名和密码在ad验证,验证通过后,返回当前用户的相关信息.(注:ldap为java自带的api不需要maven引入其他的)3.根据返回的用户信息,实现自 ...

  9. SonarQube 配置 LDAP(AD域)

    安装插件 1.下载 LDAP Plugin 插件,地址:https://docs.sonarqube.org/display/SONARQUBE67/LDAP+Plugin2.将下载的插件,放到 SO ...

随机推荐

  1. 通通WPF随笔(2)——自己制作轻量级asp.net网站服务

    原文:通通WPF随笔(2)--自己制作轻量级asp.net网站服务 大学玩asp.net时就发现VS在Debug时会起一个web服务,这东西也太神奇了服务起得这么快,而相对于IIS又这么渺小. 前几个 ...

  2. Android 联系人导入导出(VCard格式)

    之前在Android Contact 导入导出 vcf格式(不依赖第三方库)记录了一下依赖Android sdk中的功能导入导出联系人(第一次做java项目内容,有些地方的记录是否正确,暂时我也不知道 ...

  3. 零元学Expression Blend 4 - Chapter 25 以Text相关功能就能简单做出具有设计感的登入画面

    原文:零元学Expression Blend 4 - Chapter 25 以Text相关功能就能简单做出具有设计感的登入画面 本章将交大家如何运用Blend 4 内的Text相关功能做出有设计感的登 ...

  4. Android零基础入门第64节:揭开RecyclerView庐山真面目

    原文:Android零基础入门第64节:揭开RecyclerView庐山真面目 大家还记得之前在第38期~第50期都在学习列表控件吗,其中用了8期讲ListView的使用,相信都已经掌握好了吧.那么本 ...

  5. 声谱预测网络(Tacotron2)

    整个特征预测网络是一个带有注意力机制(attention)的seq2seq网络. 编码器-解码器(Encoder-Decoder)结构 在原始的编码器-解码器结构中,编码器(encoder)输入一个序 ...

  6. 手机软件没过多久就删了 APP到底得了什么病?

    直击现场 PC互联网时代正渐行渐远,移动互联网的创业浪潮汹涌而至.2014年,中国成为拥有智能手机用户最多的国家,而疯狂生长的APP正占据新的风口.据了解,目前我国主要应用商店的APP已累计超过400 ...

  7. 大神为你分析 Go、Java、C 等主流编程语言(Go可以替代Java,而且最小化程序员的工作量,学习比较容易)

    本文主要分析 C.C++98.C++11.Java 与 Go,主要论述语言的关键能力.在论述的过程中会结合华为各语言编程专家和华为电信软件内部的骨干开发人员的交流,摒弃语言偏好或者语言教派之争,尽量以 ...

  8. UILabel实现自适应宽高需要注意的地方(三)

        一.需求图如下所示    UILabel 的高度自适应 UILabel中的段落间距可设置   图片效果如下:   调整段落适应长宽高方式:         需求:   保证"游戏玩法 ...

  9. Win8下安装MAC OS

    参考: win7下安装OSX10.8及XCODE4.5 http://cleris.diandian.com/VB-Mountain-Lion     1,本机环境: win8  64位, 8G内存. ...

  10. 浅谈Java中的命名规范

    现代软件架构的复杂性需要协同开发完成,如何高效地协同呢? 答案是:制定一整套统一的规范. 无规矩不成方圆,无规范难以协同,比如,制订交通法规表面上是要限制行车权,实际上是保障公众的人身安全,试想如果没 ...