{"id":3381,"date":"2014-12-23T17:35:57","date_gmt":"2014-12-23T22:35:57","guid":{"rendered":"http:\/\/appcrawler.com\/wordpress\/?p=3381"},"modified":"2014-12-23T17:35:57","modified_gmt":"2014-12-23T22:35:57","slug":"querying-active-directory-from-java","status":"publish","type":"post","link":"http:\/\/appcrawler.com\/wordpress\/2014\/12\/23\/querying-active-directory-from-java\/","title":{"rendered":"Querying Active Directory from java"},"content":{"rendered":"<p>This is just a stub I often use when configuring AD authentication for various applications.  Invariably, I can use this to quickly determine why a given application configuration may be failing.<\/p>\n<pre lang=\"java\">\r\nimport java.util.Hashtable;\r\nimport javax.naming.*;\r\nimport javax.naming.directory.*;\r\n\r\nclass TestAD  {\r\n  static DirContext ldapContext;\r\n  public static void main (String[] args) throws NamingException {\r\n    try {\r\n      Hashtable<String, String> ldapEnv = new Hashtable<String, String>(11);\r\n      ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, \"com.sun.jndi.ldap.LdapCtxFactory\");\r\n      ldapEnv.put(Context.PROVIDER_URL,  \"ldap:\/\/youradhost:389\");\r\n      ldapEnv.put(Context.SECURITY_AUTHENTICATION, \"simple\");\r\n      ldapEnv.put(Context.SECURITY_PRINCIPAL, \"CN=ldapquerydev,OU=LDAP,OU=Service Accounts,OU=Management,DC=domain,DC=com\");\r\n      ldapEnv.put(Context.SECURITY_CREDENTIALS, \"queryuserpassword\");\r\n      ldapContext = new InitialDirContext(ldapEnv);\r\n\r\n      SearchControls searchCtls = new SearchControls();\r\n\r\n      String returnedAtts[]={\"sn\",\"givenName\", \"samAccountName\"};\r\n      searchCtls.setReturningAttributes(returnedAtts);\r\n      searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);\r\n      String searchFilter = \"(&(objectClass=user))\";\r\n      String searchBase = \"dc=domain,dc=com\";\r\n      NamingEnumeration<SearchResult> answer = ldapContext.search(searchBase, searchFilter, searchCtls);\r\n\r\n      while (answer.hasMoreElements()) {\r\n        SearchResult sr = (SearchResult)answer.next();\r\n        System.out.println(\">>>\" + sr.getName());\r\n        Attributes attrs = sr.getAttributes();\r\n        System.out.println(\">>>>>>\" + attrs.get(\"samAccountName\"));\r\n      }\r\n      ldapContext.close();\r\n    }\r\n    catch (Exception e) {\r\n      e.printStackTrace();\r\n    }\r\n  }\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>This is just a stub I often use when configuring AD authentication for various applications. Invariably, I can use this to quickly determine why a given application configuration may be failing. import java.util.Hashtable; import javax.naming.*; import javax.naming.directory.*; class TestAD {&hellip;<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"http:\/\/appcrawler.com\/wordpress\/2014\/12\/23\/querying-active-directory-from-java\/\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"footnotes":""},"categories":[24,25,27,30],"tags":[],"_links":{"self":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts\/3381"}],"collection":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/comments?post=3381"}],"version-history":[{"count":3,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts\/3381\/revisions"}],"predecessor-version":[{"id":4579,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts\/3381\/revisions\/4579"}],"wp:attachment":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/media?parent=3381"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/categories?post=3381"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/tags?post=3381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}