当前位置: 首页 > 面试题库 >

如何使用Java连接到Active Directory

姬浩渺
2023-03-14
问题内容

我正在使用Weblogic,Ejb3.0。Java 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);
    }
  }
}


 类似资料:
  • 问题内容: 文件包含和及其说明(+ )。 是否可以依靠上述文件建立连接?(仅提供数据库名称即可): 为了找到该文件,我必须知道默认的Oracle主目录,我需要在Windows注册表中检入然后具有所有文件,然后检查哪个文件首先出现在上。有没有办法在客户端计算机上自动找到此文件? 问题答案: 我什至不知道可以在瘦驱动程序中使用tnsnames,但是显然它是在版本10中添加的: http://docs.

  • 我正试图找出如何创建一个工作Kafka生产者对一个AWS MSK集群。集群启用了TLS和SASL/scram。这是我第一次使用Kafka,关于这方面的文档相当少。我目前拥有的针对未加密本地群集的代码是: 我有字符串类型变量和,它们是从AWS秘密管理器中提取的,包含集群的用户名和密码。我还需要指定哪些其他属性? AWS和Kafka网站上的文档都是关于在本地文件系统上生成JAAS和truststore

  • 问题内容: 如何使用java连接到mysql数据库? 问题答案: 逐步说明如何安装MySQL和JDBC以及如何使用它: 1.下载并安装MySQL服务器。只需按照通常的方式进行即可。每次更改时都请记住端口号。默认情况下3306。 2.下载 JDBC驱动程序并放入classpath,解压缩ZIP文件并将包含的JAR文件放入classpath。特定于供应商的JDBC驱动程序是 JDBC API的具体实现

  • 问题内容: 我这样做是为了连接cassandra。但是我的代码返回了错误。这是我的代码 这是错误日志.. 无法在项目CassandraConnection上执行目标:无法解析项目com.mycompany:CassandraConnection:jar:1.0-SNAPSHOT的依赖项:无法解析以下工件:org.specs2:scalaz- effect_2.11.0-SNAPSHOT:jar:7

  • 有关错误和可能的解决方案的更多信息,请阅读以下文章:[Help 1]http://cwiki.apache.org/confluence/display/maven/dependencyresolutionException

  • 问题内容: 我的Java程序出现这些错误。我已经把我的类路径放在里面了。如何解决呢? 代码: 问题答案: 您需要从下载MySQL包:这里并将其放置在库中,我将修改在少数分钟excact步骤 这是连接数据库的正确语法: 希望这可以帮助