import java.util.Hashtable;
import javax.naming.CompositeName;
import javax.naming.Context;
import javax.naming.Name;
import javax.naming.NameParser;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
public class MemberOfTest{
private static final String contextFactory = "com.sun.jndi.ldap.LdapCtxFactory";
private static final String connectionURL = "ldap://HOST:PORT";
private static final String connectionName = "CN=Query,CN=Users,DC=XXX,DC=XX";
private static final String connectionPassword = "XXX";
// Optioanl
private static final String authentication = null;
private static final String protocol = null;
private static String username = "XXXX";
private static final String MEMBER_OF = "memberOf";
private static final String[] attrIdsToSearch = new String[] { MEMBER_OF };
public static final String SEARCH_BY_SAM_ACCOUNT_NAME = "(sAMAccountName=%s)";
public static final String SEARCH_GROUP_BY_GROUP_CN = "(&(objectCategory=group)(cn={0}))";
private static String userBase = "DC=XXX,DC=XXX";
public static void main(String[] args) throws NamingException {
Hashtableenv = new Hashtable ();
// Configure our directory context environment.
env.put(Context.INITIAL_CONTEXT_FACTORY, contextFactory);
env.put(Context.PROVIDER_URL, connectionURL);
env.put(Context.SECURITY_PRINCIPAL, connectionName);
env.put(Context.SECURITY_CREDENTIALS, connectionPassword);
if (authentication != null)
env.put(Context.SECURITY_AUTHENTICATION, authentication);
if (protocol != null)
env.put(Context.SECURITY_PROTOCOL, protocol);
InitialDirContext context = new InitialDirContext(env);
String filter = String.format(SEARCH_BY_SAM_ACCOUNT_NAME, username);
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
constraints.setReturningAttributes(attrIdsToSearch);
NamingEnumeration results = context.search(userBase, filter,constraints);
// Fail if no entries found
if (results == null || !results.hasMore()) {
System.out.println("No result found");
return;
}
// Get result for the first entry found
SearchResult result = (SearchResult) results.next();
// Get the entry's distinguished name
NameParser parser = context.getNameParser("");
Name contextName = parser.parse(context.getNameInNamespace());
Name baseName = parser.parse(userBase);
Name entryName = parser.parse(new CompositeName(result.getName())
.get(0));
// Get the entry's attributes
Attributes attrs = result.getAttributes();
Attribute attr = attrs.get(attrIdsToSearch[0]);
NamingEnumeration e = attr.getAll();
System.out.println("Member of");
while (e.hasMore()) {
String value = (String) e.next();
System.out.println(value);
}
}
}
Here is list of attributes i got from my ldap server, Note: to get this you have to remove "memberOf" search condition.
###### ID = objectCategory ######
CN=Person,CN=Schema,CN=Configuration,DC=xxxx,DC=corp
###### ID = whenCreated ######
20080407125151.0Z
###### ID = mDBUseDefaults ######
TRUE
###### ID = mail ######
s.saminathan@xxxx.nl
###### ID = objectGUID ######
L ?L yzH?@?????
###### ID = msExchUserAccountControl ######
0
###### ID = memberOf ######
CN=VPN Users,CN=Users,DC=xxxx,DC=corp
CN=Local Administrators,CN=Users,DC=xxxx,DC=corp
CN=5th-general,OU=Groups,OU=Amsterdam,DC=xxxx,DC=corp
###### ID = msExchMailboxGuid ######
? ??D ?H?????A?2
###### ID = instanceType ######
4
###### ID = msExchPoliciesIncluded ######
{827C0A8F-A65E-4C65-B36E-E83B0B8CFE3A},{3B6813EC-CE89-42BA-9442-D87D4AA30DBC}
###### ID = objectSid ######
###### ID = proxyAddresses ######
SMTP:s.saminathan@xxxx.nl
smtp:s.saminathan@xxxx.com
X400:c=US;a= ;p=xxxx;o=Exchange;s=Saminathan;g=Sundaramurthi;
###### ID = dSCorePropagationData ######
20100723085710.0Z
16010101000000.0Z
###### ID = objectClass ######
top
person
organizationalPerson
user
###### ID = company ######
xxxx B.V.
###### ID = name ######
Sundaramurthi Saminathan
###### ID = description ######
GUI
###### ID = sn ######
Saminathan
###### ID = telephoneNumber ######
+31 (0)xx xxxxx
###### ID = userAccountControl ######
512
###### ID = primaryGroupID ######
513
###### ID = postalCode ######
xxxx CT
###### ID = uSNChanged ######
1060120
###### ID = physicalDeliveryOfficeName ######
Amsterdam
###### ID = co ######
Netherlands
###### ID = cn ######
Sundaramurthi Saminathan
###### ID = textEncodedORAddress ######
c=US;a= ;p=xxxx;o=Exchange;s=Saminathan;g=Sundaramurthi;
###### ID = title ######
Software Developer
###### ID = msExchHomeServerName ######
/o=xxxx/ou=First Administrative Group/cn=Configuration/cn=Servers/cn=EXCHANGE
###### ID = homeMTA ######
CN=Microsoft MTA,CN=EXCHANGE,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=xxxx,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=xxxx,DC=corp
###### ID = sAMAccountType ######
805306368
###### ID = legacyExchangeDN ######
/o=xxxx/ou=First Administrative Group/cn=Recipients/cn=ssaminathan
###### ID = givenName ######
Sundaramurthi
###### ID = uSNCreated ######
20429
###### ID = displayName ######
Sundaramurthi Saminathan
###### ID = userPrincipalName ######
ssaminathan@xxxx.corp
###### ID = pwdLastSet ######
xxxxxxx
###### ID = whenChanged ######
20100805092721.0Z
###### ID = department ######
GUI
###### ID = streetAddress ######
xxxxxxxxx 280
###### ID = facsimileTelephoneNumber ######
+31 (0)20 xxxxx
###### ID = l ######
Amsterdam
###### ID = mailNickname ######
ssaminathan
###### ID = distinguishedName ######
CN=Sundaramurthi Saminathan,OU=IT-GUI,OU=IT,OU=Users,OU=Amsterdam,DC=xxxx,DC=corp
###### ID = homeMDB ######
CN=Mailbox Store Users (EXCHANGE),CN=SG 1,CN=InformationStore,CN=EXCHANGE,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=xxxx,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=xxxx,DC=corp
###### ID = msExchPoliciesExcluded ######
{26491CFC-9E50-4857-861B-0CB8DF22B5D7}
###### ID = c ######
NL
###### ID = manager ######
CN=xxxxx,OU=IT-GUI,OU=IT,OU=Users,OU=Amsterdam,DC=xxxx,DC=corp
###### ID = showInAddressBook ######
CN=NL Users,CN=All Address Lists,CN=Address Lists Container,CN=xxxx,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=xxxx,DC=corp
CN=Default Global Address List,CN=All Global Address Lists,CN=Address Lists Container,CN=xxxx,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=xxxx,DC=corp
CN=All Users,CN=All Address Lists,CN=Address Lists Container,CN=xxxx,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=xxxx,DC=corp
###### ID = sAMAccountName ######
ssaminathan
No comments:
Post a Comment