用JLDAP提供的IAPI可以读取活动目录中的组织机构,用户,联系人,组,等
问题一
wangliu这个在活动目录中定义为一个“用户”
读他的objectClass属性应该是user但是wangliu的属性有3个
person
organizationalPerson
user
不知道这个是为什么?
问题二
group1是一个组,组内包含wangliu这个用户
现在能读取到group1,如何根据group1读取到group1中的用户wangliu
以下是类
package test;import com.novell.ldap.LDAPAttribute;import com.novell.ldap.LDAPAttributeSet;import com.novell.ldap.LDAPConnection;import com.novell.ldap.LDAPEntry;import com.novell.ldap.LDAPException;import com.novell.ldap.LDAPSearchResults;import com.novell.ldap.util.Base64;import java.util.Enumeration;import java.util.Iterator;import java.io.UnsupportedEncodingException;public class Search1{ public void run(String[] args)
{ if (args.length != 5) {
System.out.println("参数错误");
System.exit(0);
} int ldapPort = LDAPConnection.DEFAULT_PORT; int searchScope = LDAPConnection.SCOPE_ONE; int ldapVersion = LDAPConnection.LDAP_V3; String ldapHost = args[0]; String loginDN = args[1]; String password = args[2]; String searchBase = args[3]; String searchFilter = args[4]; LDAPConnection lc = new LDAPConnection(); try {
lc.connect(ldapHost, ldapPort);
//System.out.println(lc.isConnected());
// bind to the server
lc.bind(ldapVersion, loginDN, password.getBytes("UTF8"));
//System.out.println(lc.isBound());
LDAPSearchResults searchResults = lc.search(searchBase, searchScope, searchFilter, null, // return all attributes false); // return attrs and values while (searchResults.hasMore()) { LDAPEntry nextEntry = null; try { nextEntry = searchResults.next(); } catch (LDAPException e) { System.out.println("Error: " + e.toString()); // Exception is thrown, go for next entry if (e.getResultCode() == LDAPException.LDAP_TIMEOUT
|| e.getResultCode() == LDAPException.CONNECT_ERROR) break; else continue; } String dn = nextEntry.getDN();
String[] subDn = dn.split(","); String[] childDn = subDn[0].split("=");
System.out.println(childDn[1]);
// System.out.println(" Attributes: "); LDAPAttributeSet attributeSet = nextEntry.getAttributeSet();
LDAPAttribute LDAPattribute = attributeSet
.getAttribute("objectClass");
Enumeration enu = LDAPattribute.getStringValues();
while (enu.hasMoreElements())
{
String temp = enu.nextElement().toString();
if(temp.equals("top"))
{
}
else if(temp.equals("person"))
{
System.out.println(" "+"person");
}
else if(temp.equals("organizationalPerson"))
{
System.out.println(" "+"organizationalPerson");
}
else if(temp.equals("inetOrgPerson"))
{
System.out.println(" "+"inetOrgPerson");
}
else if(temp.equals("user"))
{
System.out.println(" "+"user");
}
else if(temp.equals("group"))
{
System.out.println(" "+"group");
}
else if(temp.equals("organizationalUnit"))
{
System.out.println(" "+"organizationalUnit");
args[3]="ou="+childDn[1]+","+args[3];
run(args);
}
else if(temp.equals("contact"))
{
System.out.println(" "+"contact");
}
//System.out.println(" "+enu.nextElement().toString());
}
} // disconnect with the server lc.disconnect(); } catch (LDAPException e) { System.out.println("Error: " + e.toString()); } catch (UnsupportedEncodingException e) { System.out.println("Error: " + e.toString()); } //System.exit(0); }
public static void main(String[] args) { Search1 search1= new Search1();
search1.run(args); }}运行时的参数
java search1 10.11.3.244 "lisi" 12345678 "ou=凯德商用,dc=contoso,dc=com" "(objectclass=*)"
问题一
wangliu这个在活动目录中定义为一个“用户”
读他的objectClass属性应该是user但是wangliu的属性有3个
person
organizationalPerson
user
不知道这个是为什么?
问题二
group1是一个组,组内包含wangliu这个用户
现在能读取到group1,如何根据group1读取到group1中的用户wangliu
以下是类
package test;import com.novell.ldap.LDAPAttribute;import com.novell.ldap.LDAPAttributeSet;import com.novell.ldap.LDAPConnection;import com.novell.ldap.LDAPEntry;import com.novell.ldap.LDAPException;import com.novell.ldap.LDAPSearchResults;import com.novell.ldap.util.Base64;import java.util.Enumeration;import java.util.Iterator;import java.io.UnsupportedEncodingException;public class Search1{ public void run(String[] args)
{ if (args.length != 5) {
System.out.println("参数错误");
System.exit(0);
} int ldapPort = LDAPConnection.DEFAULT_PORT; int searchScope = LDAPConnection.SCOPE_ONE; int ldapVersion = LDAPConnection.LDAP_V3; String ldapHost = args[0]; String loginDN = args[1]; String password = args[2]; String searchBase = args[3]; String searchFilter = args[4]; LDAPConnection lc = new LDAPConnection(); try {
lc.connect(ldapHost, ldapPort);
//System.out.println(lc.isConnected());
// bind to the server
lc.bind(ldapVersion, loginDN, password.getBytes("UTF8"));
//System.out.println(lc.isBound());
LDAPSearchResults searchResults = lc.search(searchBase, searchScope, searchFilter, null, // return all attributes false); // return attrs and values while (searchResults.hasMore()) { LDAPEntry nextEntry = null; try { nextEntry = searchResults.next(); } catch (LDAPException e) { System.out.println("Error: " + e.toString()); // Exception is thrown, go for next entry if (e.getResultCode() == LDAPException.LDAP_TIMEOUT
|| e.getResultCode() == LDAPException.CONNECT_ERROR) break; else continue; } String dn = nextEntry.getDN();
String[] subDn = dn.split(","); String[] childDn = subDn[0].split("=");
System.out.println(childDn[1]);
// System.out.println(" Attributes: "); LDAPAttributeSet attributeSet = nextEntry.getAttributeSet();
LDAPAttribute LDAPattribute = attributeSet
.getAttribute("objectClass");
Enumeration enu = LDAPattribute.getStringValues();
while (enu.hasMoreElements())
{
String temp = enu.nextElement().toString();
if(temp.equals("top"))
{
}
else if(temp.equals("person"))
{
System.out.println(" "+"person");
}
else if(temp.equals("organizationalPerson"))
{
System.out.println(" "+"organizationalPerson");
}
else if(temp.equals("inetOrgPerson"))
{
System.out.println(" "+"inetOrgPerson");
}
else if(temp.equals("user"))
{
System.out.println(" "+"user");
}
else if(temp.equals("group"))
{
System.out.println(" "+"group");
}
else if(temp.equals("organizationalUnit"))
{
System.out.println(" "+"organizationalUnit");
args[3]="ou="+childDn[1]+","+args[3];
run(args);
}
else if(temp.equals("contact"))
{
System.out.println(" "+"contact");
}
//System.out.println(" "+enu.nextElement().toString());
}
} // disconnect with the server lc.disconnect(); } catch (LDAPException e) { System.out.println("Error: " + e.toString()); } catch (UnsupportedEncodingException e) { System.out.println("Error: " + e.toString()); } //System.exit(0); }
public static void main(String[] args) { Search1 search1= new Search1();
search1.run(args); }}运行时的参数
java search1 10.11.3.244 "lisi" 12345678 "ou=凯德商用,dc=contoso,dc=com" "(objectclass=*)"
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货