I'm trying to read AD/LDAP user information using the windows API (I don't want to authenticatite to LDAP).
I've generated ADO classes an can retrieve user information with the following code:
String defaultNamingContext = "DC=DE,DC=xxx,DC=xxx,DC=xxxx";
String username = "userName you want to query";
_Connection c = Connection.create(ClsCtx.SERVER);
c.setProvider(new BStr("ADsDSOObject"));
c.open();
msado.adodb._Command command = msado.adodb.Command.create(ClsCtx.SERVER);
command.setActiveConnectionByRef(c);
String requestedInfo = "givenName,sn,userPrincipalName,telephoneNumber,mail,HomeDirectory,streetAddress,department,company,title,manager,l,c,telephoneNumber,facsimileTelephoneNumber,location";
String query = "<LDAP://" + defaultNamingContext + ">;(sAMAccountName=" + username + ");" + requestedInfo + ";subTree";
command.setCommandText(new BStr(query));
_Recordset recordSet = command.execute(new Variant(), Variant.createUnspecifiedParameter(), new Int32(-1));
Fields userData = recordSet.getFields();
StringTokenizer tokenizer = new StringTokenizer(requestedInfo, ",");
while (tokenizer.hasMoreTokens()) {
String currentFieldStr = tokenizer.nextToken();
Field currentField = userData.getItem(new Variant(currentFieldStr));
System.out.println(currentFieldStr +" : "+currentField.getValue().getBstrVal());
}