如何使用 Java 连接到 Active Directory

2024-03-20

我使用的是Weblogic,Ejb3.0。爪哇1.6

我需要通过 Java 代码访问 Active Directory。 我读到了几种方法(Kerberos、LDAP)

有人可以建议我以舒适的方式这样做吗?我在哪里可以有一些完整的代码示例,

谢谢, 射线。


以下是在 W2K3 上使用 JNDI 进行身份验证和进行 LDAP 搜索的简单代码:

class TestAD
{
  static DirContext ldapContext;
  public static void main (String[] args) throws NamingException
  {
    try
    {
      System.out.println("Début du test Active Directory");

      Hashtable<String, String> ldapEnv = new Hashtable<String, String>(11);
      ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
      //ldapEnv.put(Context.PROVIDER_URL,  "ldap://societe.fr:389");
      ldapEnv.put(Context.PROVIDER_URL,  "ldap://dom.fr:389");
      ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
      //ldapEnv.put(Context.SECURITY_PRINCIPAL, "cn=administrateur,cn=users,dc=societe,dc=fr");
      ldapEnv.put(Context.SECURITY_PRINCIPAL, "cn=jean paul blanc,ou=MonOu,dc=dom,dc=fr");
      ldapEnv.put(Context.SECURITY_CREDENTIALS, "pwd");
      //ldapEnv.put(Context.SECURITY_PROTOCOL, "ssl");
      //ldapEnv.put(Context.SECURITY_PROTOCOL, "simple");
      ldapContext = new InitialDirContext(ldapEnv);

      // Create the search controls         
      SearchControls searchCtls = new SearchControls();

      //Specify the attributes to return
      String returnedAtts[]={"sn","givenName", "samAccountName"};
      searchCtls.setReturningAttributes(returnedAtts);

      //Specify the search scope
      searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);

      //specify the LDAP search filter
      String searchFilter = "(&(objectClass=user))";

      //Specify the Base for the search
      String searchBase = "dc=dom,dc=fr";
      //initialize counter to total the results
      int totalResults = 0;

      // Search for objects using the filter
      NamingEnumeration<SearchResult> answer = ldapContext.search(searchBase, searchFilter, searchCtls);

      //Loop through the search results
      while (answer.hasMoreElements())
      {
        SearchResult sr = (SearchResult)answer.next();

        totalResults++;

        System.out.println(">>>" + sr.getName());
        Attributes attrs = sr.getAttributes();
        System.out.println(">>>>>>" + attrs.get("samAccountName"));
      }

      System.out.println("Total results: " + totalResults);
      ldapContext.close();
    }
    catch (Exception e)
    {
      System.out.println(" Search error: " + e);
      e.printStackTrace();
      System.exit(-1);
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Java 连接到 Active Directory 的相关文章

随机推荐

  • 自动完成扩展器在模式弹出扩展器内不起作用

    我正在打开一个弹出窗口 其中有一个文本框 我想为此文本框使用 Ajax 自动完成 extebder 但它无法调用 webservice 方法进行自动完成 无法理解这是回发或更新面板的问题 我应该在哪里使用更新面板 我的包含弹出 div 的页
  • GCC 声明: typedef __pid_t pid_t?

    我对 例如 pid t 的声明感到困惑 pid t 是什么意思 它是其他地方定义的另一种类型吗 如果是 在哪里 为什么我的 types h 在 ubuntu 13 04 64 位中定义 pid t 如下 ifndef pid t defin
  • 如何在 Markdown 表格中编写列表?

    可以在 Markdown 表格中创建一个列表 项目符号 编号与否 一个表看起来像这样 Tables Are Cool col 3 is right aligned 1600 col 2 is centered 12 zebra stripe
  • 按 Enter 键后将焦点保持在文本框上

    在VBA窗体中按回车键后如何将焦点保持在文本框中 此代码将文本添加到列表框 我想将焦点保持在文本框上以准备接收另一个项目 当我单击 添加 按钮时 它将文本添加到列表框并将焦点返回到文本框 但是当我按 Enter 时 它不会 即使它使用相同的
  • 在 C# 中从 DBMS_OUTPUT.GET_LINES 获取输出缓冲区

    我正在尝试获取输出DBMS OUTPUT PUT LINE 通过 C 在我的匿名 PL SQL 块中调用方法 我在这里查看了其他几个相关问题 但仍然遇到麻烦 执行匿名块的返回码正在return 1 这应该是正确的docs https doc
  • 如何在 Google Compute Engine 中打开特定端口(例如 9090)

    我有 2 个 Google Compute Engine 实例 我想在这两个实例中打开端口 9090 我认为我们需要添加一些防火墙规则 你能告诉我该怎么做吗 Answer recommended by Google Cloud collec
  • 在 Jinja2 中显示嵌套字典

    我有以下 Jinja2 模板 block body for key in tree recursive set outer loop loop for subkey in tree key if subkey R tree key subk
  • 网络挖掘-分类算法

    我的高级项目是确定网页的主导类别 我抓取了 dmoz 现在我正在尝试构建arff 之后我将使用一些特征提取方法和分类算法 您知道哪种特征提取方法与用于网络挖掘的任何分类算法表现良好吗 u分类 http www uclassify com u
  • Java 同步引用

    我有A级和B级 public class A private static List
  • 有没有一种将视频从 Android 流式传输到 RTSP 服务器的好方法?

    我已经四处寻找并没有真正发现任何东西 我想通过流将视频从内置摄像头发送到我的 RTSP 服务器 在寻找示例时 我发现 MediaPlayer 的 setDataSource 方法可能只包含服务器上流的位置 我尝试用以下方法来模拟 media
  • 更新关系数据的算法

    已知哪些算法可以在存在数据库约束的情况下通过插入 更新和删除行来执行更新数据库的任务 更具体地说 要删除的行的前图像 要插入的行的后图像以及要更新的行的两个图像都在内存中 这些行可能用于多个表 更新的确切顺序要么是未知的 要么是没有被保留
  • mingw 中的 libpthread 找不到库

    我正在尝试使用 mingw 编译以下程序 include
  • 找到gzip的开头和结尾?

    我有一些文件 有一些随机字节和多个 gzip 文件 如何在某个文件中找到 gzip 流的开头和结尾 gzip 流之间有许多随机字节 所以 基本上我需要找到任何 gzip 文件并从那里获取它 读自RFC 1952 GZIP https www
  • 将 xml 转换为 JSON 的库,反之亦然

    我需要将 xml 中的一种文档格式转换为 JSON 反之亦然 我相信这是一个常见的要求 也许仍然有一个库可以做到这一点 有知道的吗 不是 C 但是纯粹的 XSLT 2 0 实现将 JSON 对象转换为 XML 文档 看看来自FXSL 2 x
  • Docker 构建“无法解析 'archive.ubuntu.com'” apt-get 无法安装任何内容

    我一直在尝试在以前可以工作但现在不再工作的各种文件上运行 Docker 构建 一旦 Docker 文件包含任何用于安装软件的行 它就会失败并显示一条消息 指出找不到该包 RUN apt get y install supervisor no
  • 在 C# 中,如果抛出未处理的异常,Finally 块是否会在 try、catch、finally 中执行? [复制]

    这个问题在这里已经有答案了 另一个面试问题期待真 假答案 但我不太确定 复制 在 NET 中 如果 catch 块中出现错误 finally 总是会被调用怎么办 https stackoverflow com questions 58209
  • python-pandas 和 mysql 等数据库

    Pandas 的文档提供了大量处理以各种格式存储的数据的最佳实践示例 然而 我找不到任何使用 MySQL 等数据库的好例子 任何人都可以向我指出链接或提供一些如何使用转换查询结果的代码片段mysql python有效地处理 Pandas 中
  • 在 ReactJS 中解析 JSON 数据

    我有这样的数据 movies abridged cast characters Dominic Toretto id 162652472 name Vin Diesel characters Brian O Conner id 162654
  • 按周分组并选择本周的记录

    我一直在尝试使用 MySQL 显示每周销售结果表 其中一周的结果应如下所示 Sun Mon Tues Wed Thur Fri Sat 所以我继续使用这个查询 SELECT DATE FORMAT cart calendar datefie
  • 如何使用 Java 连接到 Active Directory

    我使用的是Weblogic Ejb3 0 爪哇1 6 我需要通过 Java 代码访问 Active Directory 我读到了几种方法 Kerberos LDAP 有人可以建议我以舒适的方式这样做吗 我在哪里可以有一些完整的代码示例 谢谢