关于LDAP问题
我在LDAP查询的时候,总是需要加通配符才能查到,不知道为什么? 请帮我。谢谢
例如:
public static String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory"; //驱动
public static String MY_HOST = "ldap://localhost:389"; //主机地址和端口
public static String MY_SEARCHBASE = "o=airius.com"; //基点入口
public static String MY_FILTER = "(mail=west)"; //过滤条件
public static String MGR_DN="uid=admin,ou=Administrators,ou=TopologyManagement,o=NetscapeRoot"; //用户名
public static String MGR_PW="1"; //密码
public static String MY_ATTRS[] = {/*"cn","userpassword","mail",*/"cn"};
//StringBuffer res = new StringBuffer(); //用来输入名字,IP地址的对象
public static String temp = new String();
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,INITCTX);
env.put(Context.PROVIDER_URL,MY_HOST);
env.put(Context.SECURITY_AUTHENTICATION,"simple"); //使用简单认证来认证用户
env.put(Context.SECURITY_PRINCIPAL,MGR_DN);
env.put(Context.SECURITY_CREDENTIALS,MGR_PW);
DirContext ctx = new InitialDirContext(env);
//设置查询范围并开始查询
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration results = ctx.search(MY_SEARCHBASE,MY_FILTER,constraints);
在public static String MY_FILTER = "(mail=west)"; 中是查不到的,
只有 public static String MY_FILTER = "(mail=west*)"; 这样写才能查到(加了通配符)。不知道是问什么?