建站 discuz,外贸公司出口退税流程,app开发定制公司哪家,成都网站搜索排名优化哪家好首先#xff0c;您将需要设置Active Directory#xff0c;以便可以运行和测试代码。 如果#xff08;像我一样#xff09;没有一台装有Windows Server的计算机#xff0c;那么即使在Mac OSX上#xff0c;也可以通过这种方法设置Active Directory。 您要做的第一件事是在… 首先您将需要设置Active Directory以便可以运行和测试代码。 如果像我一样没有一台装有Windows Server的计算机那么即使在Mac OSX上也可以通过这种方法设置Active Directory。 您要做的第一件事是在AD中设置用户a。 确保设置用户时他不必在首次登录时更改密码否则您将从Java代码中收到LDAP错误。 显然您可以更改代码以提示更改密码但这只是需要注意的事项。 还要为您的用户创建几个组并将它们添加到他们的个人资料中。 在下面的代码中只有一种验证方法。 它以用户密码和域为参数并返回用户所属的组的列表。 如果用户不存在或密码有问题则会引发异常。 package util;import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.*;
import java.text.MessageFormat;
import java.util.*;public class ADConnect {private static final String MEMBER_OF memberOf;public static ListString authenticate(String user,String securityToken,String domain) throws NamingException {Hashtable env new Hashtable();env.put(Context.INITIAL_CONTEXT_FACTORY, com.sun.jndi.ldap.LdapCtxFactory);env.put(Context.PROVIDER_URL, LDAP:// domain);env.put(Context.SECURITY_AUTHENTICATION, simple);env.put(Context.SECURITY_PRINCIPAL, user domain);env.put(Context.SECURITY_CREDENTIALS, securityToken);InitialDirContext ctx new InitialDirContext(env);String[] dcParts domain.split(\\.);String domainSearch ;for (String dcPart : dcParts) {domainSearch DC dcPart ,;}domainSearch domainSearch.substring(0, domainSearch.length() - 1);// Create the search controlsSearchControls searchCtls new SearchControls();String[] attributes new String[]{MEMBER_OF};searchCtls.setReturningAttributes(attributes);// Specify the search scopesearchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);// Search for objects using the filterNamingEnumeration result ctx.search(domainSearch,MessageFormat.format((SAMAccountName{0}), user), searchCtls);//Get the first resultSearchResult sr (SearchResult) result.next();Attribute memberOf sr.getAttributes().get(MEMBER_OF);ListString memberOfGroups new ArrayList();if (memberOf ! null) {for (Enumeration e1 memberOf.getAll(); e1.hasMoreElements(); ) {memberOfGroups.add(e1.nextElement().toString());}}return memberOfGroups;}public static void main(String[] args) throws NamingException{System.out.println(ADConnect.authenticate(user, password, domain));}
} 该代码很容易解释您可以将其用作模板来尝试为搜索添加不同的属性。 翻译自: https://www.javacodegeeks.com/2015/06/integrating-active-directory-from-java.html