String url = "ldap://10.0.0.10:389/"
String domain = "dc=dtas,dc=com"
String user = "cn=administrator,cn=users"
String password = "111111"
Hashtable<String, String>env = new Hashtable<String, String>中灶()
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory")// LDAP 工厂
env.put(Context.SECURITY_AUTHENTICATION, "simple")//滑培做 LDAP访问安全信衡级别
env.put(Context.PROVIDER_URL, url)
env.put(Context.SECURITY_PRINCIPAL, user+","+domain)// 填DN
env.put(Context.SECURITY_CREDENTIALS, password)// AD Password
env.put("java.naming.ldap.attributes.binary", "objectSid objectGUID")
LdapContext ldapCtx = null
try {
ldapCtx = new InitialLdapContext(env , null)
queryGroup(ldapCtx)
//queryUser(ldapCtx)
} catch (NamingException e) {
e.printStackTrace()
} finally {
if(ldapCtx != null) {
try {
ldapCtx.close()
} catch (NamingException e) {
}
}
}
}
private static void queryGroup(LdapContext ldapCtx) throws NamingException {
SearchControls searchCtls = new SearchControls()
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE)
String searchFilter = "objectClass=organizationalUnit"
String searchBase = "ou=myDeptSubDept,ou=myDept,dc=DS-66,dc=com"
String returnedAtts[] = {"distinguishedName", "objectGUID", "name"}
searchCtls.setReturningAttributes(returnedAtts)
NamingEnumeration<SearchResult>answer = ldapCtx.search(searchBase, searchFilter, searchCtls)
while (answer.hasMoreElements()) {
SearchResult sr = answer.next()
Attributes Attrs = sr.getAttributes()
if (Attrs != null) {
NamingEnumeration<?>ne = Attrs.getAll()
while(ne.hasMore()) {
Attribute Attr = (Attribute)ne.next()
String name = Attr.getID()
Enumeration<?>values = Attr.getAll()
if (values != null) { // 迭代
while (values.hasMoreElements()) {
String value = ""
if("objectGUID".equals(name)) {
value = UUID.nameUUIDFromBytes((byte[]) values.nextElement()).toString()
} else {
value = (String)values.nextElement()
}
System.out.println(name + " " + value)
}
}
}
System.out.println("=====================")
}
}
}
使用netscape的ldap工具包。使用其它启告的工具包,写法类似。注:必须知道base dn,以下假渗友定ou=admin为base dn。若有明确的base dn,那写法比如:ou=admin,o=test1
源代码如下:
==========================
import netscape.ldap.*
public class SearchTest {
public static void main(String[] args) {
LDAPConnection lc = null
LDAPEntry findEntry = null
int status = -1
try {
//lc = ConnectionPool.
lc = new LDAPConnection()
/* Connect to server */
String MY_HOST = "localhost"
int MY_PORT = 389
lc.connect(MY_HOST, MY_PORT)
System.out.println("1=========" +lc.isConnected())
lc.authenticate("cn=Directory Manager","password")
System.out.println("2=========" +lc.isConnected())
/* search for all entries with surname of Jensen */
String MY_FILTER = "(objectclass=*)"
String MY_SEARCHBASE = "ou=admin"
LDAPSearchConstraints cons = lc.getSearchConstraints()
cons.setBatchSize(0)
cons.setMaxResults(5)
MY_FILTER = "(objectclass=*)"
LDAPSearchResults res = lc.search(MY_SEARCHBASE,
LDAPConnection.SCOPE_ONE,
MY_FILTER,
null,
false,
cons)
while (res.hasMoreElements()) {
LDAPEntry cLDAPEntry = res.next()
System.out.println("" + cLDAPEntry.getDN())
System.out.println("" + cLDAPEntry.toString())
}
status = 0
} catch (LDAPException e) {
System.out.println("Error: " + e.toString())
e.printStackTrace()
}
/* Done, so disconnect */丛旁槐
if ((lc != null) &&lc.isConnected()) {
try {
lc.disconnect()
System.out.println("3=========" +lc.isConnected())
} catch (LDAPException e) {
System.out.println("Error: " + e.toString())
}
}
System.out.println("4=========" +lc.isConnected())
System.exit(status)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)