与Foxpass绑定后,将用户身份验证到LDAP

时间:2017-01-20 18:25:54

标签: java ldap

我一直试图在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

但似乎没有任何效果。有关找到正确格式进行搜索的任何帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

在我看来,您的searchString曾经存在于Active Directory环境中。用Foxbase试试

String searchString = String.format("(uid=%s)", username);