我一直试图在java中运行一段简单的代码 - 身份验证作为Foxpass(托管LDAP服务)的绑定,然后尝试向其他用户进行身份验证。 我基本上在我的Foxpass设置中创建了一个活页夹,并创建了一些用户。
代码是:
Hashtable<String,String> env = new Hashtable <String,String>();
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, bindUser);
env.put(Context.SECURITY_CREDENTIALS, bindPassword);
env.put(Context.INITIAL_CONTEXT_FACTORY, contextFactory);
env.put(Context.PROVIDER_URL, myFoxpassUrl);
try {
DirContext ldapContext = new InitialDirContext(env);
NamingEnumeration<SearchResult> results = null;
SearchControls controls = new SearchControls();
controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
controls.setCountLimit(1);
controls.setTimeLimit(5000);
String searchString = "(&(objectCategory=user)(sAMAccountName=username))";
results = ldapContext.search("", searchString, controls);
System.out.println(results.hasMore());
}
catch (Exception e)
{
e.printStackTrace()
}
绑定(使用bindUsername和bindPassword进行身份验证的效果很好)。但是,搜索用户返回0值。我尝试使用:
sAMAccountName=myusername
sAMAccountName=myusername@mydomain.com
sAMAccountName=CN=myusername,DC=mydomain,DC=com
Or
username=myusername
...
Or
Email=myusername@mydomain.com
但似乎没有任何效果。有关找到正确格式进行搜索的任何帮助。
谢谢
答案 0 :(得分:0)
在我看来,您的searchString曾经存在于Active Directory环境中。用Foxbase试试
String searchString = String.format("(uid=%s)", username);