没有域的Java Active Directory登录

时间:2015-06-11 08:43:14

标签: java active-directory ldap

我们有几个使用我们公司AD的网站。 目前,为了登录,我们必须使用以下

  

IUSER \用户ID

代码:

Hashtable<String, String> config = new Hashtable<String, String>();
    config.put("java.naming.factory.initial", "com.sun.jndi.ldap.LdapCtxFactory");
    config.put("java.naming.provider.url", ldapUrl);
    config.put("java.naming.security.authentication", "simple");
    config.put("java.naming.security.principal", "iuser\\" + username);
    config.put("java.naming.security.credentials", password);

InitialDirContext dirCxt = new InitialDirContext(config);

然而,当我们去搜索AD时,我们只能使用用户ID

SearchControls cons = new SearchControls();
cons.setSearchScope(SearchControls.SUBTREE_SCOPE);

NamingEnumeration<SearchResult> resultsEnum =
                derek.search("dc=iuser,dc=example,dc=example,dc=com", "(&(objectCategory=user)(cn={0}))", new Object[] {username}, cons);

当我们尝试创建InitialDirContext而不首先放置域时,我们得到User not found response

有没有办法创建InitialDirContext而不必将我们的域名放在用户名前面?

1 个答案:

答案 0 :(得分:0)

虽然我建议你宁愿使用Kerberos。您应该尝试使用全局编录而不是<div style="float:left; margin: 0px 7px 0px 7px; line-height: 0; border: 1px solid #021a40; width:100 px"><img src="http://i60.tinypic.com/6ypsoh.png" alt="" /></div> <div style="float:left; margin: 0px 7px 0px 7px; line-height: 0; border: 1px solid #021a40; width:100 px"><img src="http://i60.tinypic.com/6ypsoh.png" alt="" /></div> <div style="float:left; margin: 0px 7px 0px px; line-height: 0; border: 1px solid #021a40; width:100 px"><img src="http://i60.tinypic.com/6ypsoh.png" alt="" /></div> ,而是使用commonNameuserPrincipalName等唯一属性。