有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

不带域的Java Active Directory登录

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

iuser\userid

使用代码:

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);

然而,当我们去搜索广告时,我们只能使用用户名

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响应

有没有一种方法可以创建InitialDirContext,而不必将我们的域放在用户名前面


共 (1) 个答案

  1. # 1 楼答案

    而我建议你使用Kerberos。您应该尝试使用全局目录,而不是使用commonName,而是使用像userPrincipalNameaAMAccountName这样的唯一属性