是否通过Waffle(Java)获取具有身份验证的Active Directory用户列表?

是否通过Waffle(Java)获取具有身份验证的Active Directory用户列表?,java,active-directory,ldap,waffle,Java,Active Directory,Ldap,Waffle,我希望允许用户验证和检索Active Directory用户的完整列表,而无需输入密码。我可以通过华夫格轻松地进行身份验证,并且可以查询特定于已验证用户的信息,比如他们所属的组列表。然而,华夫格似乎没有能力进行更一般的查询,比如完整的用户列表(甚至是属于某个组的用户列表) 我还配置了另一个玩具示例,其中我使用JNDI查询用户列表,这很好,但它需要用户名和密码才能建立连接 假设在我的广告服务器上禁用了匿名查询,我是否可以使用通过华夫格建立的经过身份验证的会话来查询用户列表?如果有人感兴趣,我会找到

我希望允许用户验证和检索Active Directory用户的完整列表,而无需输入密码。我可以通过华夫格轻松地进行身份验证,并且可以查询特定于已验证用户的信息,比如他们所属的组列表。然而,华夫格似乎没有能力进行更一般的查询,比如完整的用户列表(甚至是属于某个组的用户列表)

我还配置了另一个玩具示例,其中我使用JNDI查询用户列表,这很好,但它需要用户名和密码才能建立连接


假设在我的广告服务器上禁用了匿名查询,我是否可以使用通过华夫格建立的经过身份验证的会话来查询用户列表?

如果有人感兴趣,我会找到答案。老实说,我很惊讶,在网上的某个地方没有找到答案或明确的解决方案。事实证明,对于一个简单的用户列表查询来说,华夫格是不必要的——我修改了它以生成以下方法,实现了这一目的:

static void queryCom4j(){ 
  IADs rootDSE = COM4J.getObject(IADs.class, "LDAP://RootDSE", null);
  String namingContext = (String)rootDSE.get("defaultNamingContext");

  _Connection conn = ClassFactory.createConnection();
  conn.provider("ADsDSOObject");
  conn.open("Active Directory Provider","","",-1);

  _Command cmd = ClassFactory.createCommand();
  cmd.activeConnection(conn);

  String fields = "distinguishedName,userPrincipalName,telephoneNumber,mail";
  String query = "(&(objectclass=user)(objectcategory=person))";

  cmd.commandText("<LDAP://" + namingContext + ">;" + query + ";" + fields + ";subTree");
  _Recordset rs = cmd.execute(null, Variant.getMissing(), -1);

  System.out.println("Found " + rs.recordCount() + " users");
  while (!rs.eof()){
      for (int i = 0; i < fields.split(",").length; i++){
          Object value = rs.fields().item(i).value();
          System.out.println((value == null) ? "N/A" : value.toString());
      }
      rs.moveNext();
  }
static void queryCom4j(){
IADs rootDSE=COM4J.getObject(IADs.class,“LDAP://rootDSE”,null);
String namingContext=(String)rootDSE.get(“defaultNamingContext”);
_Connection conn=ClassFactory.createConnection();
连接提供商(“ADSSOObject”);
conn.open(“Active Directory提供程序”、“”、“”、-1);
_Command cmd=ClassFactory.createCommand();
cmd.activeConnection(conn);
String fields=“DifferentiedName、userPrincipalName、电话号码、邮件”;
字符串查询=“(&(objectclass=user)(objectcategory=person))”;
cmd.commandText(“;”+query+“;”+fields+“子树”);
_记录集rs=cmd.execute(null,Variant.getMissing(),-1);
System.out.println(“找到的”+rs.recordCount()+“用户”);
而(!rs.eof()){
对于(int i=0;i