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

LDAP简单示例

 
阅读更多
import java.util.Enumeration;
import java.util.Hashtable;

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.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 LdapTest {
 public static void main(String[] args) {
  String account = "admin";
  String password = "1";
  String root = "o=com"; // root

  Hashtable env = new Hashtable();
  env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
  env.put(Context.PROVIDER_URL, "ldap://localhost:389/" + root);
  env.put(Context.SECURITY_AUTHENTICATION, "simple");
  env.put(Context.SECURITY_PRINCIPAL, "cn=" + account + "," + root);
  env.put(Context.SECURITY_CREDENTIALS, password);

  DirContext ctx = null;
  try {
   // 链接ldap
   ctx = new InitialDirContext(env);
   System.out.println("ldap认证成功");

   // 3.添加节点
   String newUserName = "user2";
   BasicAttributes attrsbu = new BasicAttributes();
   BasicAttribute objclassSet = new BasicAttribute("objectclass");
   objclassSet.add("person");
   objclassSet.add("top");
   objclassSet.add("organizationalPerson");
   objclassSet.add("inetOrgPerson");
   attrsbu.put(objclassSet);
   attrsbu.put("sn",   newUserName);
   attrsbu.put("uid",   newUserName);
   ctx.createSubcontext("cn=" + newUserName, attrsbu);

   // 5.修改节点
   account = "user2";
   String newDisplayName = "newDisplayName";
   ModificationItem modificationItem[] = new ModificationItem[1];
   modificationItem[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("displayName", newDisplayName));
   ctx.modifyAttributes("cn=" + account, modificationItem);

   // 查询节点
   SearchControls constraints = new SearchControls();
   constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
   // constraints.setSearchScope(SearchControls.ONELEVEL_SCOPE);
   NamingEnumeration en = ctx.search("", "cn=user2", constraints); // 查询所有用户
   while (en != null && en.hasMoreElements()) {
    Object obj = en.nextElement();
    if (obj instanceof SearchResult) {
     SearchResult si = (SearchResult) obj;
     System.out.println("name:   " + si.getName());
     Attributes attrs = si.getAttributes();
     if (attrs == null) {
      System.out.println("No   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(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();
   }

   // 4.删除节点
   account = "user2";
   ctx.destroySubcontext("cn=" + account);

  } catch (javax.naming.AuthenticationException e) {
   System.out.println("认证失败");
  } catch (Exception e) {
   System.out.println("认证出错:");
   e.printStackTrace();
  }

  if (ctx != null) {
   try {
    ctx.close();
   } catch (NamingException e) {
    // ignore
   }
  }
  System.exit(0);
 }
} 

 

分享到:
评论

相关推荐

    Spring Boot中使用LDAP来统一管理用户信息的示例

    在了解了 LDAP 的基础概念之后,我们通过一个简单示例进一步理解!创建一个基础的 Spring Boot 项目,在 pom.xml 中引入两个重要依赖: ```xml <groupId>org.springframework.boot <artifactId>spring-boot-...

    java 操作ldap的简单实例

    Java 操作 LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)的简单实例是 Java 语言中访问和操作 LDAP 服务器的基本示例。本示例展示了如何使用 Java 语言连接 LDAP 服务器,执行搜索操作,并获取...

    JAVA中使用LDAP进行用户认证

    LDAP是一种基于X.500标准的目录访问协议,但它更简单、更灵活,可以根据需要进行定制。LDAP支持TCP/IP协议,使其可以在Internet上进行访问。 LDAP目录可以存储各种类型的数据,如电子邮件地址、邮件路由信息、人力...

    phpLdap.rar

    以下是一个简单的 LDAP 绑定和搜索操作示例: ```php $ldap_server = 'ldap.example.com'; $ldap_dn = 'cn=Manager,dc=example,dc=com'; $ldap_password = 'secret'; // 连接 LDAP 服务器 $ldap_conn = ldap_...

    ldap-master.zip

    5. **示例应用**:可能包含使用LDAP进行身份验证或查询的简单应用程序,用于演示如何与LDAP服务器交互。 6. **文档**:可能包括关于LDAP概念、命令行工具和API使用的详细文档。 学习和理解这些内容,你可以: - **...

    java连接LDAP的jar包和实例

    下面是一个简单的使用jLDAP进行SSL连接并查询LDAP目录的Java代码示例: ```java import com.novell.ldap.*; public class LDAPSSLExample { public static void main(String[] args) { String ldapUrl = "ldaps:...

    Python 和 LDAP进行域认证

    以下是一个简单的示例代码: ```python import ldap # 连接 LDAP 服务器 l = ldap.initialize('ldap://your_ldap_server') l.protocol_version = ldap.VERSION3 # 搜索用户信息 base_dn = 'dc=your_domain,dc=...

    LDAP原理配置指南

    2. 有限的信息对象类型:LDAP目录中的信息对象类型相对固定,不支持复杂的数据结构和强大的查询语言,而是通过预定义的简单查询方法进行操作。 3. 结构化数据:LDAP目录采用层次结构,通过Distinguished Name (DN)来...

    spring-Ldap

    **Spring-Ldap 深度解析** ...总之,Spring-Ldap 是一个强大且灵活的工具,它让 LDAP 集成变得简单易行,如果你在工作中涉及到 LDAP 相关的开发,那么掌握 Spring-Ldap 将极大地提升你的工作效率。

    ldap 访问AD测试

    8. **示例代码**:可能提供了一些使用特定编程语言(如Java或Python)实现的示例代码,展示如何编写LDAP查询和操作。 9. **最佳实践**:关于在实际环境中使用LDAP访问AD时应遵循的一些最佳实践,以确保安全性和性能...

    ldap_delete.rar_c++ ldap_ldap_ldap删除条目

    以下是一个简单的连接示例: ```cpp #include <ldap.h> Ldap* ldap_init(const char* url) { Ldap* ld = ldap_init(url, LDAP_PORT); if (ld == nullptr) { // 处理错误 } return ld; } int ldap_simple_...

    spring ldap 1.3.0下载

    以下是一个简单的示例,展示了如何使用Spring LDAP查询LDAP目录: ```java @Configuration public class LdapConfig { @Bean public ContextSource contextSource() { LdapContextSource contextSource = new ...

    Go-ldap-test-tool一个轻量级的ldap测试工具

    6. **自定义脚本**:可能支持通过编写简单的脚本来实现复杂的测试场景,提高测试的灵活性。 对于开发和运维人员来说,Go-ldap-test-tool 提供了一个便捷的界面或者命令行工具,使得 LDAP 测试工作更加高效。通过这...

    ldap for c

    这个压缩包可能还包含了简单的示例,帮助你快速入门。这些示例通常会展示如何初始化连接、执行搜索、处理结果以及进行基本的CRUD(创建、读取、更新、删除)操作。通过研究这些例子,你可以更好地理解如何将LDAP API...

    CentOS上安装LDAP,Java访问LDAP数据。

    以下是一个简单的示例代码 `Java4Ldap.java`: ```java import javax.naming.*; import javax.naming.directory.*; public class Java4Ldap { public static void main(String[] args) { // LDAP连接参数 ...

    测试LDAP注入.docx

    每个 LDAP 查询使用一个或多个搜索过滤器,它们决定了请求返回的目录项,搜索过滤器可以使用各种逻辑运算符来表示复杂的搜索条件,常用的搜索过滤器有简单匹配条件、析取查询、合取查询等。 但是,如果用户提交的...

    LDAP_Java_API_使用指南.rar

    下面是一个简单的Java LDAP查询示例: ```java import javax.naming.*; import javax.naming.ldap.InitialLdapContext; public class LdapExample { public static void main(String[] args) throws ...

    java对LDAP的增删改查

    我们将使用一个简单的示例程序来演示如何使用 JNDI 连接到 LDAP 服务器,并执行基本的操作。 连接 LDAP 服务器 ---------------- 要连接到 LDAP 服务器,需要使用 JNDI 的 LDAP 实现。首先,需要import 相应的类库...

    java使用ldap修改ad域用户密码

    下面是一个简单的示例代码: ```java public static void main(String[] args) throws UnknownHostException, IOException { // ... String adminName = "cn=administrator,cn=users,DC=security,DC=boco"; ...

    java操作LDAP的架包

    创建一个简单的LDAP连接和查询示例: ```java Properties env = new Properties(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, "ldap://...

Global site tag (gtag.js) - Google Analytics