`
qm4050
  • 浏览: 78491 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

ldap增删改查

阅读更多

package test2;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.util.Enumeration;

import java.util.Properties;

import javax.naming.NamingEnumeration;

import javax.naming.NamingException;

import javax.naming.directory.Attribute;

import javax.naming.directory.Attributes;

import javax.naming.directory.BasicAttribute;

import javax.naming.directory.BasicAttributes;

import javax.naming.directory.DirContext;

import javax.naming.directory.InitialDirContext;

import javax.naming.directory.ModificationItem;

import javax.naming.directory.SearchControls;

import javax.naming.directory.SearchResult;

public class Test {

public static DirContext dc; //相当于这个树的一个映像

public static void conn()

{

String dn="cn=Manager,dc=my-domain,dc=com"; //包括连接LDAP服务器的用户及要操作的根节点

Properties env = new Properties();

env.put(DirContext.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");

env.put(DirContext.PROVIDER_URL, "ldap://localhost:" + 389);

if (dn != null) {

env.put(DirContext.SECURITY_PRINCIPAL, dn);

env.put(DirContext.SECURITY_CREDENTIALS, "secret");

}

try {

dc = new InitialDirContext(env);

System.out.println("连接成功");

} catch (NamingException e) {

e.printStackTrace();

}

}

public static void deleteInformation()

{

try {

dc.destroySubcontext("cn=mm,ou=ppeople,dc=my-domain,dc=com");

System.out.println("删除成功");

} catch (NamingException ne) {

ne.printStackTrace();

}

}

public static void addInformation()

{

try

{

Attributes attrs = new BasicAttributes();

attrs.put("uid", "alee");

attrs.put("sn","Lee");

attrs.put("telephoneNumber", "14085550017");

attrs.put("userPassword","redqueen".getBytes());

BasicAttribute objectclass = new BasicAttribute("objectclass");

objectclass.add("uidObject");

objectclass.add("person");

attrs.put(objectclass);

dc.createSubcontext("cn=mm,ou=ppeople,dc=my-domain,dc=com", attrs);

System.out.println("添加成功");

} catch (Exception ne) {

ne.printStackTrace();

System.out.println("添加失败");

}

}

public static void modifyInformation(String dn)

{

try {

ModificationItem[] mods = new ModificationItem[1];

mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("sn", "qm"));// 所修改的属性

dc.modifyAttributes(dn,mods);

System.out.println("修改成功");

} catch (NamingException ne) {

ne.printStackTrace();

}

}

public static void search() {// 我只能按照某些属性查找节点,偶还不会怎么查找一个目录或按照更复杂的正则式查找特定节点/目录

try {

SearchControls constraints = new SearchControls();

constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);

System.out.print("what would you want to search:");

BufferedReader bd = new BufferedReader(new InputStreamReader(System.in));

String s = bd.readLine();

NamingEnumeration en = dc.search("dc=my-domain,dc=com", "uid=" + s, constraints); // 要查询的UID。如果是*则可以查到所有UID的节点

if (en == null) {

System.out.println("Have no NamingEnumeration.");

}

if (!en.hasMoreElements()) {

System.out.println("Have no element.");

}

while (en != null && en.hasMoreElements()) {// 可以查出多个元素

Object obj = en.nextElement();

if (obj instanceof SearchResult) {

SearchResult si = (SearchResult) obj;

System.out.println("\tname: " + si.getName());

Attributes attrs = si.getAttributes();

if (attrs == null) {

System.out.println("\tNo attributes");

} else {

for (NamingEnumeration ae = attrs.getAll(); ae.hasMoreElements();) {// 获得该节点的所有属性

Attribute attr = (Attribute) ae.next();// 下一属性

String attrId = attr.getID();// 获得该属性的属性名

for (Enumeration vals = attr.getAll(); vals.hasMoreElements();) {// 获得一个属性中的所有属性值

System.out.print("\t\t" + attrId + ": ");

Object o = vals.nextElement();// 下一属性值

if (o instanceof byte[])

System.out.println(new String((byte[]) o));

else

System.out.println(o);

}

}

}

} else {

System.out.println(obj);

}

System.out.println();

}

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

conn();

addInformation();

deleteInformation();

modifyInformation("uid=jdoe,ou=people,dc=my-domain,dc=com");

search();

try {

dc.close();

} catch (NamingException e) {

e.printStackTrace();

}

}

}

分享到:
评论

相关推荐

    springldap源码 增删改查

    springldap增删改查的源码 适合初学者下载学习 写的很简答 注释中加入了自己写代码遇到的问题解决方案和心得

    java Ldap增删改查测试代码

    java Ldap增删改查代码。ldap样例数据,可用来导入。

    ldap增删改查源码

    本文将深入探讨基于LDAP的增删改查操作的源码实现,以及批量处理的相关技术,并结合作者的实践心得,帮助你理解和应用这些知识。 一、LDAP的基础概念 LDAP目录服务是一种数据库,它存储的是轻量级的、易于查找的...

    Ldap增删改查

    在Java中,我们可以利用JNDI(Java Naming and Directory Interface)库来与LDAP服务器进行交互,实现对目录服务的增、删、改、查操作,也就是所谓的CRUD(Create, Read, Update, Delete)。 ### 增(Create) 在...

    基于springldap的增删改查以及验证

    下面将详细阐述基于Spring LDAP的增删改查操作和用户验证。 **1. 增加(Add)操作** 在Spring LDAP中,我们通常会使用`LdapTemplate`来进行数据的添加。首先,需要创建一个`LdapEntry`对象,包含要插入的属性和值。...

    LDAP的增删改查java和c接口用例

    本例较简单的实现了LDAP的增删改查功能,分类关于java接口和c语言接口都有说明,适用于初学者

    SpringLDAP和JNDI的增删改查

    **Spring LDAP与JNDI:增删改查详解** 在Java开发中,当我们需要与目录服务进行交互,例如用户认证、权限管理等,Spring LDAP和Java Naming and Directory Interface (JNDI)是两个常用的技术。本文将通过一个入门级...

    java对LDAP的增删改查

    Java 对 LDAP 的增删改查 Java 语言通过 JNDI(Java Naming and Directory Interface)提供了对 LDAP(Lightweight Directory Access Protocol)的支持,允许开发者通过 Java 语言来操作 LDAP 服务器。LDAP 是一种...

    C#对数据库的操作(包括增删改查)

    本示例主要讲解了如何使用C#进行数据库的增删改查(CRUD)操作,这对于开发Windows桌面应用程序,如Winform程序,尤其关键。 首先,C#操作数据库通常会利用ADO.NET框架,它提供了丰富的类库来连接、查询和管理...

    LDAP增、删、改、查操作

    LDAP增、删、改、查操作 LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)是用于管理目录服务的协议,广泛应用于身份验证、授权和目录管理等领域。本文将对LDAP的增、删、改、查操作进行详细...

    java通过ldap协议对ad域进行增删改查

    物超所值,也是突然接了这么个东西,无文档,无经验,网上介绍也少。然后硬着头皮做了,包含组织的增删改,用户的增删改还有特定用户的查询。保证能用。报53代号的请确保自己的服务器设置正确。

    JAVA通过LDAP+SSL(证书)实现用户和组织(部门)增删改查.zip

    本文将深入探讨如何使用Java通过LDAP(轻量级目录访问协议)和SSL(安全套接层)来实现用户和组织(部门)的增删改查操作,并结合证书确保通信的安全性。这些功能通常用于大型企业的用户管理,例如Active Directory...

    Spring Boot 连接LDAP的方法

    Spring Boot 连接LDAP是实现LDAP增删改查操作的重要方法,本文将详细介绍Spring Boot 连接LDAP的方法,包括使用ODM快速实现LDAP增删改查操作、配置Spring LDAP连接信息、创建实体类作为LDAP中的entry映射等。...

    spring boot集成ldap

    例如,创建一个继承自`LdapRepository`的接口,可以定义增删改查的通用方法: ```java public interface UserRepository extends LdapRepository, String> { User findByUid(String uid); List<User> findBySn...

    java实现对ladp增 删 改 查操作,以及如何按目录遍历节点

    java实现对ladp增 删 改 查操作,以及如何按目录遍历节点,其中有一点设计业务的代码,但是不影响对ladp操作的代码,代码很干净

    基于OpenLdap操作工具类(增删改查)

    在这个场景中,我们将深入探讨如何通过Java编程语言创建一个基于OpenLDAP的操作工具类,实现对目录服务的增删改查功能。 首先,理解OpenLDAP的基本概念是至关重要的。OpenLDAP是一个开源的LDAP服务器,它提供了...

    基于深度学习的实战 spring boot 的项目合集(总共包含 65 个集成demo,已经完成 53 个).zip

    JOB、API接口管理测试Swagger、基于RBAC的动态权限认证Security、Session...LDAP增删改查、动态添加/切换数据源、单机限流AOP+Guava RateLimiter、分布式限流AOP+Redis+Lua、ElasticSearch 7.x使用官方Rest High Level ...

    JAVA ldap AD 域 免证书 查询 修改 删除 新增 启用 禁用 修改密码

    在这篇文章中,我们将探讨使用 JAVA 实现 LDAP 的 AD 域免证书查询、修改、删除、新增、启用、禁用和修改密码的操作。 首先,让我们了解什么是 LDAP 和 AD 域。LDAP(Lightweight Directory Access Protocol)是一...

    JAVA LDAP

    这篇内容将详细介绍如何使用Java进行LDAP的增、删、改、查操作。 首先,我们需要引入Java LDAP API,它包含在Java的标准库`javax.naming`和`javax.naming.ldap`包中。导入以下依赖: ```java import javax.naming....

    ldap示例程序

    在这个"ldap示例程序"中,我们将探讨基于VC(Visual C++)的开发环境,如何利用LDAP进行基本的数据操作,包括增删改查。 **1. LDAP基础概念** - **目录服务**:LDAP是一种目录服务协议,它允许客户端通过网络查询和...

Global site tag (gtag.js) - Google Analytics